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」