在splitting
之后是一个字符串,如果index的最后一个值在那里,那么我不会得到任何exception
。
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
我期待null value
,但它抛出错误。
2条答案
按热度按时间myzjeezk1#
如果使用替代方法,它将不会引发错误
按单参数版本
因此,尾随的空字符串不包括在结果数组中。
但是,对于2参数版本
如果n是非正的,则模式将被尽可能多地应用
tzxcd3kk2#
使用
String field[] = s.split(";");
时,实际调用方法为split(";",0)
。当
limit=0
和the trailing element of the result list is equal to 0
时,方法split
通过删除空元素来构造结果,如下所示:这就是为什么
s = "123;456;;;777;000"
没有得到任何异常,但s = "123;456;;;;"
得到ArrayindexoutofBoundException的原因。总之,如果你想得到“”值,你可以assgin
limit = -1 or other inegative number
(假设你不想限制split
的作用域),例如: