Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

Pattern#split()をちゃんと理解した

"boo:and:foo"

o 	5 	{ "b", "", ":and:f", "", "" }
o 	-2 	{ "b", "", ":and:f", "", "" }
o 	0 	{ "b", "", ":and:f" }

ゼロの場合、このパターンの適用回数と配列の長さは制限されませんが、後続の空の文字列は破棄されます。

Pattern#split()で第2引数であるlimitを渡さなければ、オーバーロードされたメソッドが呼び出されて、limitは0として扱われる。
そのとき末尾のマッチングがポイントで、limitが0だと末尾がマッチングしても破棄される。
破棄せずに空文字で結果がほしい場合は、limitを-1にしておく。