对于aaa||||||||||||||||||这种类型的数据,String的split方法返回的长度是1,后续代码会有问题,用下面的newsplit方法可以解决这个问题,记录一下。

    public static void main(String[] args) {
        String target = "aaa||||||||||||||||||";
        System.out.println(target);
        Map<String, String> map = new HashMap<>();
        map.put("s2", "s2value");
        map.put("s5", "s5value");
        map.put("s7", "s7value");
        //StringUtils.split()
        String[] array = newsplit(target, "|");
        //System.out.println("array length = " + array.length);
        for (Map.Entry<String, String> m : map.entrySet()) {
            //System.out.println("key:" + m.getKey() + " value:" + m.getValue());
            Integer ind = Integer.parseInt(m.getKey().substring(1)) - 1;
            if (StringUtils.isBlank(array[ind])) {
                array[ind] = m.getValue();
            }
        }
        //array[5] = map.get("s5");
        target =  StringUtils.join(array, "|");
        System.out.println(target);
    }

    public static String[] newsplit(String strInfo, String strSplit) {
        //第1步计算数组大小
        int size  = 0;
        int index = 0;
        do{
            size++;
            index++;
            index = strInfo.indexOf(strSplit ,index);
        }while(index!=-1);
        String[] arrRtn= new String[size]; //返回数组
        //-------------------------------------------------------
        //第2步给数组赋值
        int startIndex = 0;
        int endIndex = 0;
        for(int i = 0; i < size; i++){
            endIndex = strInfo.indexOf(strSplit, startIndex);
            if(endIndex == -1) {
                arrRtn[i] = strInfo.substring(startIndex);
            } else {
                arrRtn[i] = strInfo.substring(startIndex, endIndex);
            }
            startIndex = endIndex+1;
        }
        return arrRtn;
    }

 

最后修改于 2019-07-04 17:01:34
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇