【发布时间】:2014-07-11 16:24:42
【问题描述】:
我已经通过String's split method documentation,但结果并不如预期。当我们拆分一个将 limit 参数设置为负值的字符串时,它总是附加一个空值。为什么要这样做?考虑一些情况
// Case 1
String str = "1#2#3#";
System.out.println(str.split("#").length); // Prints 3
System.out.println(str.split("#", -1).length); // Prints 4
我在这里期望的是两个打印件 3。
// Case 2
str = "";
System.out.println(str.split("#").length); // Prints 1
System.out.println(str.split("#", -1).length); // Prints 1
现在由于没有找到匹配项,通常的无限制拆分方法应该打印 0,但它会创建一个包含空字符串的数组。
// Case 3
str = "#";
System.out.println(str.split("#").length); // Prints 0
System.out.println(str.split("#", -1).length); // Prints 2
现在我有一个匹配项,并且没有限制参数的拆分方法可以正常工作。这是我的预期输出,但为什么它不会像案例 2 那样在这种情况下创建一个空数组?
// Case 4
str = "###";
System.out.println(str.split("#").length); // Prints 0
System.out.println(str.split("#", -1).length); // Prints 4
这里第一个拆分方法符合预期,但为什么第二个给出 4 而不是 3?
// Case 5
str = "1#2#3#";
System.out.println(str.split("#", 0).length); // Prints 3
System.out.println(str.split("#", 3).length); // Prints 3
System.out.println(str.split("#", 4).length); // Prints 4
现在是正数限制的最后一个案例。如果正数
【问题讨论】: