我的代码是:
String s = "1;;;; 23;;";
System.out.println(s.split(";").length);
Run Code Online (Sandbox Code Playgroud)
并作为输出5.源代码split是:
public String[] split(String regex) {
return split(regex, 0);
}
Run Code Online (Sandbox Code Playgroud)
并且文件说:
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split(java.lang.String,int)方法一样.因此,结尾的空字符串不包含在结果数组中.
例如,字符串"boo:and:foo"会使用以下表达式产生以下结果:
Run Code Online (Sandbox Code Playgroud)Regex Result : { "boo", "and", "foo" } o { "b", "", ":and:f" }
如果我打印我的字符串:
1
23
Run Code Online (Sandbox Code Playgroud)
我不应该从这样的1;;;; 23;;东西中得到什么{"1", "", "", "", " 23", ""}?
不,五是正确的,正如你引用的文档所述:
因此,结尾的空字符串不包含在结果数组中.
这就是为什么省略了数组末尾的空字符串的原因.如果你想要空字符串,请按照Evgeniy Dorofeev的回答说明并指定-1的限制.
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |