System.out.println(",".split(",", 0).length);
System.out.println("".split(",", 0).length);
プリントを破棄しないことにより、ドキュメントに違反しているようだ:分割は、Javaで空の文字列は、末尾の空の文字列に
これは奇妙に思えます。 nはゼロ、パターンが可能な回数として適用される場合String.split(pattern, n)、
のマニュアルによれば、アレイは、任意の長さを有することができ、末尾の空の文字列はに廃棄されます。
2番目のケースでは、空の文字列を分割するとき、このルールは無視されるようです。これは予想される動作ですか? resulting array has just one element, namely this string
"".split(",", 0).length
式は、入力のどの部分と一致しない場合
ドキュメントからも
が、ここでは '」
1
別の例として、配列の長さになります".split("、 ")'何も分割しなかったので、元の文字列 '[" "]'を含む配列が得られます。その長さは '1'です。 – Pshemo
もう一つの興味深いケースは '' ".split(" ")'です。結果配列も '[" "]'で、その長さは '1'です。 '' ".split(anything)'は常に '[" "]'を返すことを覚えておく価値があります。 – Pshemo