拆分字符串后,如果索引的最后一个值在那里,那么我没有得到任何异常。 '''
public class Digits {
public static void main(String[] args) {
String s = "123;456;;;777;000";
String field[] = s.split(";");
System.out.println(field.length);
System.out.println(field[5]);
}
}
''' 输出是 ---> s[5] = 000
'''
public class Digits {
public static void main(String[] args) {
String s = "123;456;;;;";
String field[] = s.split(";");
System.out.println(field.length);
System.out.println(field[5]);
}
}
''' 输出是----> ArrayindexoutofBoundException
我期待空值,但它抛出错误
如果你使用替代方法,它不会抛出错误
String s = "123;456;;;;";
String field[] = s.split(";", -1);
System.out.println(field.length);
System.out.println(field[5]);
根据单参数版本
因此结果中不包含尾随的空字符串 数组。
但是使用 2 参数版本
如果 n 是非正数,那么该模式将被应用尽可能多的次数
当你使用
String field[] = s.split(";");
时,实际的调用方式是split(";",-1)
.
当
limit=0
时,方法split
通过移除空元素构造结果如下:
这就是
s = "123;456;;;777;000"
没有得到任何异常,但是s = "123;456;;;;"
得到错误的原因。
总结一下,如果你想得到""值,你可以assgin
limit = -1 or other inegative number
(前提是你不想限制split
的范围),例如:
String field[] = s.split(";", -1);
String field[] = s.split(";", -2);