2 回答

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個贊
這個api文檔上有詳細(xì)的描述,分割后得到的數(shù)組最大長度不會超過limit的值,因此你的代碼中l(wèi)imit=3,所以split的結(jié)果數(shù)組長度最大為3
API內(nèi)容:
split
public String[] split(String regex,
int limit)
根據(jù)匹配給定的正則表達(dá)式來拆分此字符串。
此方法返回的數(shù)組包含此字符串的子字符串,每個子字符串都由另一個匹配給定表達(dá)式的子字符串終止,或者由此字符串末尾終止。數(shù)組中的子字符串按它們在此字符串中出現(xiàn)的順序排列。如果表達(dá)式不匹配輸入的任何部分,那么所得數(shù)組只具有一個元素,即此字符串。
limit 參數(shù)控制模式應(yīng)用的次數(shù),因此影響所得數(shù)組的長度。如果該限制 n 大于 0,則模式將被最多應(yīng)用
n - 1 次,數(shù)組的長度將不會大于 n,而且數(shù)組的最后一項(xiàng)將包含所有超出最后匹配的定界符的輸入。如果 n
為非正,那么模式將被應(yīng)用盡可能多的次數(shù),而且數(shù)組可以是任何長度。如果 n 為
0,那么模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可以是任何長度,并且結(jié)尾空字符串將被丟棄。
例如,字符串 "boo:and:foo" 使用這些參數(shù)可生成以下結(jié)果:
Regex
Limit
結(jié)果
:
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" }
調(diào)用此方法的 str.split(regex, n)
形式與以下表達(dá)式產(chǎn)生的結(jié)果完全相同:
Pattern.compile(regex).split(str, n)
參數(shù):
regex - 定界正則表達(dá)式
limit - 結(jié)果閾值,如上所述
返回:
字符串?dāng)?shù)組,它是根據(jù)給定正則表達(dá)式的匹配拆分此字符串確定的
拋出:
PatternSyntaxException
添加回答
舉報