2017-10-24 18 views
1

誰かがこの動作を説明することができます:なぜ空の文字列のString.split(regexp)は長さ1のString []ですか?

"one,two,three".split(",").length == 3 
"one,two".split(",").length == 2 
"one".split(",").length == 1 
"".split(",").length != 0 // eek! 
+1

正確にどのように見てみますか?空の文字列を分割しても空の配列は生成されませんか? – luk2302

+5

なぜあなたはライン4では驚かれますが、ライン3では驚かないのですか?両方の入力文字列にカンマがありません。 – azurefrog

+0

'split'メソッドは、文字列をコンマで区切られたトークンに分割します。 3行目には1つのトークンが含まれます。そこで、1要素配列を返します。 4行目にはトークンが含まれていません。なぜゼロ要素配列を返さないのでしょうか? – DodgyCodeException

答えて

4

式は入力のどの部分と一致しない場合、 得られた配列は、単に1つの要素、すなわち、この文字列を有しています。

split(regex) -> split(regex, 0)のでsplit(String regex, int limit)

3

このbehavoiurは一貫している:

"one".split(",") // {"one"} 
"".split(",") // {""} 

空のString """one"のような文字列であるので、それだけでは(またはその他の文字列)のように振る舞います。 Javadocのより

関連する問題