我试过这段代码:
String str =",,,,,";
String str2=",,,,, ";
System.out.println(str.split(",").length);
System.out.println(str2.split(",").length);
Run Code Online (Sandbox Code Playgroud)
输出是:
0
6
Run Code Online (Sandbox Code Playgroud)
唯一的区别是str价值是,,,,,(没有 空间)和str2价值是,,,,,(有 空间)
有人可以解释一下吗?
因为在String#split()方法中,尾随空String不会包含在数组结果中.
String str =",,,,,";
String str2=",,,,, ";
Run Code Online (Sandbox Code Playgroud)
正如str.split(",")本应该给你的那样[, , , , ,],它会返回[],因为你在那里有一个尾随的空字符串.
不同于str2.split(",")它会给你
[, , , , , ]
^ //note the whitespace element
Run Code Online (Sandbox Code Playgroud)
你可以试试
System.out.println(",,,,, ,,,,".split(",").length);
Run Code Online (Sandbox Code Playgroud)
这仍然会给你输出:6,这是[, , , , , ]因为在空格之后,你所有的都是尾随空字符串(因此不包含在数组结果中)
注意:您可以通过指定限制来保留尾随空字符串:
System.out.println(str.split(",", -1).length);
^ limit
Run Code Online (Sandbox Code Playgroud)
输出:6
有关详细信息,请查看String#split文档