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("|");