String.split()遇到空字符串不解析的情况

1、split的api说明

stringObj.split([separator,[limit]]) 

stringObj:要被分解的 String 

separator:字符串或正则表达式对象

limit:参数控制模式应用的次数。当为正值:模式将被最多应用 n - 1 次。当负值:模式将被应用尽可能多的次数,

2、案例:空字符串不被解析

public class test {
    public static void main(String[] args) {
        String str = "1,2,3,4,,,";
        String[] arr = str.split(",");
        for (String string : arr) {
            System.out.println("str"+string);
        }
        System.out.println(arr.length);
    }
}

结果:

str1

str2

str3

str4

4

3、解决办法

方法1:limit赋值成比该字符串被分隔成字符数组后数组的长度大很多的值,这能保证所有为空的都能被解析,

方法2:limit设置为非正,也能全部解析

public class test {
    public static void main(String[] args) {
        String str = "1,2,3,4,,,";
        String[] s = str.split(",",-1);
        for (String string : s) {
            System.out.println("str"+string);
        }
        System.out.println(s.length);
    }
}

输出:

str1

str2

str3

str4

str

str

str

7

注意:

1、如果用“.”作为分隔的话,必须是如下写法,String.split("\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法,String.split("\|"),这样才能正确的分隔开,不能用String.split("|");

原文地址:https://www.cnblogs.com/tiandi/p/13650819.html