在java 1.6中String.split的行为?

我的代码是:

String s = "1;;;; 23;;"; System.out.println(s.split(";").length); 

并给出输出5split的源代码是:

 public String[] split(String regex) { return split(regex, 0); } 

并且文件说:

此方法的工作方式就像通过调用给定表达式和limit参数为零的双参数split(java.lang.String,int)方法一样。 因此,结尾的空字符串不包含在结果数组中。

例如,字符串“boo:and:foo”会产生以下结果:

 Regex Result : { "boo", "and", "foo" } o { "b", "", ":and:f" } 

如果我打印我有的字符串:

 1 23 

我不应该从这1;;;; 23;; 1;;;; 23;;{"1", "", "", "", " 23", ""}

不,五是正确的,正如你引用的文档所述:

因此,结尾的空字符串不包含在结果数组中。

这就是为什么省略了数组末尾的空字符串的原因。 如果你想要空字符串,请按照Evgeniy Dorofeev的回答说明并指定限制为-1。

由于limit = 0,因此不包括尾随空字符串。 尝试

 System.out.println(s.split(";", -1).length); 

你会得到7

什么时候它会分裂字符串’;’ 现在并投入arrays。