String中的split(",")和split(",",-1)的区别

1、当字符串最后一位有值时,两者没有区别

2、当字符串最后一位或者N位是分隔符时,前者不会继续切分,而后者继续切分。即前者不保留null值,后者保留。

下面看例子:

public static void main(String[] args) {
        String str="a,,b,c,,,";
        String[] split1 = str.split(",");
        System.out.println("str.split(\",\"):");
        for(int i=0;i<split1.length;i++){
            System.out.println(i+":"+split1[i]);
        }
        System.out.println("str.split(\",\", -1):");
        String[] split2 = str.split(",", -1);
        for(int i=0;i<split2.length;i++){
            System.out.println(i+":"+split2[i]);
        }
    }

输出结果如下:

java split空值得到 java split空值也保留_java


str.split(",", -1)分割后的字符串,即使字符串的最后为空,分割后也会保留;而由str.split(",")分割字符串时,当缀在字符串后面为空时,分割后会被丢弃;当字符串的中间出现空的值时(在本例中就是a和b之间的值),两者的处理结果是一样的

这个就适用于:在批量向后台传参时,当前台的字段不是必填字段时,有时为空可能会导致分割后的参数不正确,此时使用str.split(",", -1)是一种解决方法