在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