在public String\[\] split(String regex)
Java字符串分割功能
Java文档,我们可以找到例子:
字符串
"boo:and:foo"
,例如,产生这些表情结果如下正则表达式 结果
Ø
{ "b", "", ":and:f" }
什么是第二个结果""
从何而来?从b
到oo
或oo
和:and:f
?
在public String\[\] split(String regex)
Java字符串分割功能
Java文档,我们可以找到例子:
字符串
"boo:and:foo"
,例如,产生这些表情结果如下正则表达式 结果
Ø
{ "b", "", ":and:f" }
什么是第二个结果""
从何而来?从b
到oo
或oo
和:and:f
?
当您使用分隔符o
并且eachother旁边有两个分隔符时,它会生成一个空字符串。因此,举例来说,如果您有一个字符串foo::bar
并将其与:
分开,您将得到{"foo", "", "bar"}
,因为::
之间的空间在分割时被视为空字符串。
如果你想分割没有任何空字符串,看看this question。
结束空字符串?
分割时给出零或没有限制的说法则丢弃尾部空字段
编号:Java: String split(): I want it to include the empty strings at the end
那么最后的oo呢? 。最后没有空字符串标记。 –
@omkarsirra是的,在最后的空字符串脱落(看看这个一些深入的讨论关于它http://stackoverflow.com/questions/13939675/java-string-split-i-want-it-对包括最空的字符串,在最末尾 – px06
注意,对于一个正则表达式引擎,人物之间的位置也算。所以,正则表达式引擎看到boo:and:foo
字符串作为
<EMPTY>b<EMPTY>o<EMPTY>o<EMPTY>:<EMPTY>a<EMPTY>n<EMPTY>d<EMPTY>:<EMPTY>f<EMPTY>o<EMPTY>o<EMPTY>
^between^ ^between^
由于第一^between^
不是在字符串的结尾,split
保持在结果的空位置(串)。后面的空元素作为结尾被删除,因为int limit
参数默认为0
。如果您通过-1
(非正值),则所有结尾的空元素将出现在结果数组中。请参阅String#split参考。
这返回两个字符串,'b',':和:f',但为什么找不到原点'?如果使用split(“o +”,-1),那么三个字符串返回,'b',':和:f'和'',我知道'+'意味着'o'必须至少出现一次 – user1169587
@DavidPérezCabrera,不知道发生了什么......为什么最后的''被计算在内,但'o''o'之间的''不计算在内? – user1169587