在java 1.6中String.split的行为?
我的代码是:
String s = "1;;;; 23;;"; System.out.println(s.split(";").length);
并给出输出5
。 split
的源代码是:
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。