誰かがこの動作を説明することができます:なぜ空の文字列のString.split(regexp)は長さ1のString []ですか?
"one,two,three".split(",").length == 3
"one,two".split(",").length == 2
"one".split(",").length == 1
"".split(",").length != 0 // eek!
誰かがこの動作を説明することができます:なぜ空の文字列の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つの要素、すなわち、この文字列を有しています。
split(regex) -> split(regex, 0)
のでsplit(String regex, int limit)
このbehavoiurは一貫している:
"one".split(",") // {"one"}
"".split(",") // {""}
空のString ""
が"one"
のような文字列であるので、それだけでは(またはその他の文字列)のように振る舞います。 Javadocのより
正確にどのように見てみますか?空の文字列を分割しても空の配列は生成されませんか? – luk2302
なぜあなたはライン4では驚かれますが、ライン3では驚かないのですか?両方の入力文字列にカンマがありません。 – azurefrog
'split'メソッドは、文字列をコンマで区切られたトークンに分割します。 3行目には1つのトークンが含まれます。そこで、1要素配列を返します。 4行目にはトークンが含まれていません。なぜゼロ要素配列を返さないのでしょうか? – DodgyCodeException