String.split()用法
先看下面代码
将以下字符串以 “,” 分割,生成数组长度目测很多人觉得是8,而实际结果为5
public static void main(String[] args) {
String s = ",aa,bb,cc,dd,,,";
String[] split = s.split(",");
System.out.println("split长度 : "+split.length);
for (String s1 : split) {
System.out.println("s1 = " + s1);
}
}
为了探明原因,我们debug查看一下源码
可以看到开始的确分割出来8个
从其while循环语句可以看出,若list末尾为空字符串,resultSize–;
之后抛弃后面空字符串,返回新的数组
如下图可看出
regex : 是正则表达式的意思,也就是说这可根据给定正则表达式进行分割;
limit : 规定分割n-1次,它有三种情况:
- limit不传值或传0:不传时会自动定义其传0,则分割时会无限次数并去除字符串后的空字符串
- 若limit传参为正整数n,则会进行n-1次分割:若n=1,进行0次分割,得到的将是原字符串
3.若limit传参为负数,则执行切割到无限次,数组长度也可以是任何数值,结尾空字符串将不再被丢弃