public String[] split(String regex, int limit)
split方法有两个参数,分别是字符串类型的regex(分隔符),int类型的limit(限制个数)。通过源码可以发现,limit可以分为正数、0、负数,参数控制应用阵列的次数,从而影响结果阵列的长度
- 如果限制n大于零,则最多应用模式n-1次,数组的长度将不大于*n,数组的最后一个条目将包含最后一个匹配分隔符以外的所有输入。
- 如果n是非正的,那么将尽可能多次应用该模式,并且该阵列可以具有任何长度。
- 如果n为零,则将尽可能多次应用模式,数组可以有任何长度,并且将丢弃尾随的空字符串
通过一段代码来解释
public static void main(String[] args) {
String s = "aa,bb,cc,dd";
String[] a1 = s.split(",", 2);
String[] a2 = s.split(",", 0);
String[] a3 = s.split(",", -1);
System.out.println(a1.length);
System.out.println(a2.length);
System.out.println(a3.length);
for (int i = 0; i < a1.length; i++) {
System.out.println(a1[i]);
}
}
第一组的结果是2、4、4
public static void main(String[] args) {
String s1 = "aa,bb,cc,dd,";
String[] b1 = s1.split(",", 2);
String[] b2 = s1.split(",", 0);
String[] b3 = s1.split(",", -1);
System.out.println(b1.length);
System.out.println(b2.length);
System.out.println(b3.length);
}
第一组的结果是2、4、5
这样可以得出结论
当n>0时,则将字符串分割为n个字符串
当n<=0时,则将字符串分割为n个字符串,但是当n<0时,也会将后面的分割符继续分割