我没有得到以下内容:
在以下String
中:
String s = "1234;x;;y;";
如果我这样做:
String[] s2 = s.split(";");
我认为s2.length
为4和
s2[0] = "1234";
s2[1] = "x";
s2[2] = "";
s2[3] = "y";
但是在字符串中:String s = "1234;x;y;;";
我明白了:
s2.length
为3和
s2[0] = "1234";
s2[1] = "x";
s2[2] = "y";
有什么区别,在后一种情况下我也不会得到4?
更新
使用-1
并不是我期待的行为
我的意思是最后一个分号是String
的结尾所以在后一个例子中我也期望4
作为数组的长度
答案 0 :(得分:10)
来自docs,
此方法的工作方式就像通过调用双参数split方法一样 给定的表达式和一个零的限制参数。尾随空 因此,字符串不包含在结果数组中。
<强>更新强>
您有五个以;
分隔的子字符串在第二种情况下,这些子字符串为1234
,x
,y
,和
。根据文档,将消除由拆分操作产生的所有空子串(在末尾)。
有关详细信息,请查看here。
如果n为零,那么模式将被应用多次 可能,数组可以有任何长度,并且尾随空字符串 将被丢弃。
例如,字符串boo:and:foo
会使用以下参数生成以下结果:
Regex Limit Result
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" } // all the empty substrings at the end were eliminated
答案 1 :(得分:4)
省略尾随空字符串。但是,如果需要,有一些方法可以明确地包含它们。
答案 2 :(得分:3)
来自http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。因此,尾随空字符串不包含在结果数组中。
答案 3 :(得分:2)
好问题。如果检查String.split()
{{1}}并查看“boo:foo”示例,则可以看到尾部空字符串被省略。
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。因此,尾随空字符串不包含在结果数组中。
例如,字符串“boo:and:foo”会产生以下结果:
正则表达式结果
:{“boo”,“and”,“foo”}
o {“b”,“”,“:和:f”}
答案 4 :(得分:1)
这是java中split方法的默认行为,不返回空标记。 ]
s.split(“\;”, - 1);应该返回空令牌
答案 5 :(得分:0)
为什么不先查看文档中的内容。这是链接:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29
以下是你的答案:
因此,结果中不包括尾随空字符串 阵列。