我试过这段代码:
String str =",,,,,";
String str2=",,,,, ";
System.out.println(str.split(",").length);
System.out.println(str2.split(",").length);
输出是:
0
6
唯一的区别是str
值为,,,,,
(没有 空格),str2
值为,,,,,
( 空间)
任何人都可以解释一下吗?
答案 0 :(得分:5)
因为在String#split()
方法中,尾随空字符串不会包含在数组结果中。
String str =",,,,,";
String str2=",,,,, ";
由于str.split(",")
会给你[, , , , ,]
,它会返回[]
,因为你有一个尾随空字符串。
与str2.split(",")
不同,它会给你
[, , , , , ]
^ //note the whitespace element
您可以尝试
System.out.println(",,,,, ,,,,".split(",").length);
这仍然会给你输出:6
,这是[, , , , , ]
,因为在空格之后,你所拥有的只是尾随空字符串(因此不包含在数组中)结果)
注意:您可以通过指定限制来保留尾随空字符串:
System.out.println(str.split(",", -1).length);
^ limit
输出:6
答案 1 :(得分:2)
This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.
取自String documentation.
如果您的第二个字符串为",,, ,,"
,则长度为4。
希望能够清楚地解释清楚。