Alnitak 是正确的,默认情况下将丢弃尾随的空字符串。
如果你想有尾随空字符串,你应该使用split(String, int)
并传递一个负数作为limit
参数。
该limit
参数控制应用模式的次数,因此会影响结果数组的长度。如果限制n大于零,则该模式将最多应用n - 1 次,数组的长度将不大于n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果n
为非正数,则该模式将尽可能多地应用,并且数组可以具有任意长度。如果n为零,则该模式将被应用尽可能多的次数,数组可以有任意长度,并且尾随的空字符串将被丢弃。
请注意,这split(aString)
是 的同义词split(aString, 0)
:
split
此方法的工作方式就像通过使用给定表达式和零限制参数调用双参数方法一样。因此,尾随的空字符串不包含在结果数组中。
此外,您应该使用循环从数组中获取值;这避免了一个可能的ArrayIndexOutOfBoundsException
.
所以你更正的代码应该是(假设你想要尾随的空字符串):
String sample = "::";
String[] splitTime = sample.split(":", -1);
for (int i = 0; i < splitTime.length; i++) {
System.out.println("Value " + i + " : \"" + splitTime[i] + "\"");
}
输出:
值 0:“”
值 1:“”
值 2:“”