Alnitak 是正确的,默认情况下将丢弃尾随的空字符串。
如果要使用尾随的空字符串,则应使用 split(String, int)
并传递一个负数作为参数。limit
该参数控制应用模式的次数,因此会影响结果数组的长度。如果限制 n 大于零,则模式将最多应用 n - 1 次,数组的长度将不大于 n,数组的最后一个条目将包含除最后匹配的分隔符之外的所有输入。如果 n 为非正数,则模式将尽可能多地应用,并且数组可以具有任何长度。如果 n 为零,则模式将尽可能多地应用,数组可以具有任何长度,并且将丢弃尾随的空字符串。limit
请注意,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] + "\"");
}
输出:
Value 0 : ""
Value 1 : ""
Value 2 : ""