java 获取指定字符后的字符串

先上一段代码打印一下

  public static void main(String[] args) {
        bb();
    }

    public  static  void bb()
    {
        String aa="下单数量:1;金额:100;订单号:001";
        Map<String,Object> map=new HashMap<String, Object>();
        map.put("姓名","张三");
        map.put("年龄",18);

        String[] a = aa.split(";");//以;为切割把string转成string数组
        for(String str:a){
           String[] b=str.split(":");
           map.put(b[0],b[1]);
        }
        String jsonString=JSONObject.toJSONString(map);
        System.out.println(jsonString);

    }

打印结果如下:

{"下单数量":"1","姓名":"张三","年龄":18,"订单号":"001","金额":"100"}

别走,继续往下看,因为这样代码是简单了,但是是有bug出现的,我们把aa更改一下:

 String aa="下单数量:1;金额:100;订单号:001;下单链接地址:https://www.baidu.com/";

打印结果如下:

{"下单数量":"1","下单链接地址":"https","姓名":"张三","年龄":18,"订单号":"001","金额":"100"}

这个结果是不是有问题呢!对的,把http后面的具体网站给截掉了。

下面我们先了解一下以下代码的用法:

str.substring(0, str.indexOf(":"))//截取第一个:之前的所有字符串
str.substring(str.indexOf(":"))//截取第一个:之后的所有字符并且包括本身

把上面的代码替换成我们刚刚的方法:

 String aa="下单数量:1;金额:100;订单号:001;下单链接地址:https://www.baidu.com/";
        Map<String,Object> map=new HashMap<String, Object>();
        map.put("姓名","张三");
        map.put("年龄",18);

        String[] a = aa.split(";");//以;为切割把string转成string数组
        for(String str:a){
           map.put(str.substring(0, str.indexOf(":")),str.substring(str.indexOf(":")+1));
        }
        String jsonString=JSONObject.toJSONString(map);
        System.out.println(jsonString);

打印结果如下:

{"下单数量":"1","下单链接地址":"https://www.baidu.com/","姓名":"张三","年龄":18,"订单号":"001","金额":"100"}

完美解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值