我的代码是:
String s = "1;;;; 23;;";
System.out.println(s.split(";").length);
并将其作为输出5
。
split
的源代码是:
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", ""}
这样的东西中得到什么?
答案 0 :(得分:8)
不,五是正确的,正如你引用的文档所述:
因此,结果中不包括尾随空字符串 阵列。
这就是省略数组末尾的空字符串的原因。如果你想要空字符串,请按照Evgeniy Dorofeev的回答说明并指定-1的限制。
答案 1 :(得分:2)
由于limit = 0,因此不包括尾随空字符串。试试
System.out.println(s.split(";", -1).length);
你会得到7
答案 2 :(得分:0)
它将在任何时候拆分字符串';'现在并投入阵列。