今天在對一個String對象進行拆分的時候,總是無法到達預計的結果。呈現數據的時候出現異常,后來debug之后才發現,錯誤出在String spilt上,於是開始好好研究下這東西,開始對api里的split(String regex, int limit)比較感興趣,可是就是不理解當limit為負數時的情況
下面是api里的解釋:
limit 參數控制模式應用的次數,因此影響所得數組的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,數組的長度將不會大於 n,而且數組的最后一項將包含所有超出最后匹配的定界符的輸入。如果 n 為非正,那么模式將被應用盡可能多的次數,而且數組可以是任何長度。如果 n 為 0,那么模式將被應用盡可能多的次數,數組可以是任何長度,並且結尾空字符串將被丟棄。
例如,字符串 "boo:and:foo" 使用這些參數可生成以下結果:
Regex Limit 結果
: 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組合,
現在我明白了,{ "b", "", ":and:f", "", "" } 第一個“”是因為兩個o之間的空數據,第二個也是這個原因,最后一個是將"boo:and:foo"中最后空字符串也算進去的。