ava中關於String的split(String regex, int limit) 方法

https://www.cnblogs.com/zhang-cb/p/6112616.htmlhtml

今天在對一個String對象進行拆分的時候,老是沒法到達預計的結果。呈現數據的時候出現異常,後來debug以後才發現,錯誤出在String spilt上,因而開始好好研究下這東西,開始對api裏的split(String regex, int limit)比較感興趣,但是就是不理解當limit爲負數時的狀況 
下面是api裏的解釋:api


limit 參數控制模式應用的次數,所以影響所得數組的長度。若是該限制 n 大於 0,則模式將被最多應用 n - 1 次,數組的長度將不會大於 n,並且數組的最後一項將包含全部超出最後匹配的定界符的輸入。若是 n 爲非正,那麼模式將被應用盡量多的次數,並且數組能夠是任何長度。若是 n 爲 0,那麼模式將被應用盡量多的次數,數組能夠是任何長度,而且結尾空字符串將被丟棄。數組

例如,字符串 "boo:and:foo" 使用這些參數可生成如下結果:debug

 

Regex Limit 結果htm

: 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" }對象


對limit爲負仍是有點不理解,尤爲是對 o -2組合,blog

如今我明白了,{ "b", "", ":and:f", "", "" } 第一個「」是由於兩個o之間的空數據,第二個也是這個緣由,最後一個是將"boo:and:foo"中最後空字符串也算進去的。字符串

 

public String[] split(String regex, int limit)string

limit n 大於0,則pattern(模式)應用n - 1 次it

關於String.split(String regex, int limit)String s = 「boo:and:foo」 
關於String.split(String regex, int limit)s.split(「:」,2) 
關於String.split(String regex, int limit)//result is { 「boo」, 「and:foo」 } 
limit n 小於0,則pattern(模式)應用無限次

關於String.split(String regex, int limit)String s = 「boo:and:foo」 
關於String.split(String regex, int limit)s.split(「:」,-2) 
關於String.split(String regex, int limit)//result is { 「boo」, 「and」, 「foo」 } 
limit n 等於0,則pattern(模式)應用無限次而且省略末尾的空字串

關於String.split(String regex, int limit)String s = 「boo:and:foo」 
關於String.split(String regex, int limit)s.split(「o」, -2) 
//result is { 「b」, 「」, 「and:f」, 「」, 「」 } 
s.split(「o」, 0) 
//result is { 「b」, 「」, 「and:f」 }

例子:string 「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」 }
相關文章
相關標籤/搜索