在java 1.6中String.split的行为?

时间:2012-12-27 15:11:08

标签: java split java-6

我的代码是:

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

并将其作为输出5split的源代码是:

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

并且文档说:

  

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

     

例如,字符串“boo:and:foo”会产生以下结果   用这些表达式:

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

如果我打印我的字符串:

1



 23

我不应该从1;;;; 23;; {"1", "", "", "", " 23", ""}这样的东西中得到什么?

3 个答案:

答案 0 :(得分:8)

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

  

因此,结果中不包括尾随空字符串   阵列。

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

答案 1 :(得分:2)

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

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

你会得到7

答案 2 :(得分:0)

它将在任何时候拆分字符串';'现在并投入阵列。