JavaのString.split(”,”)は、split(”,”, -1)にしたほうがいい

知ってる人にとっては何をいまさらって感じなんでしょうけど、はまってしまいました。

JavaのString.splitは、limit引数をつけないと、最後の空文字をとります。
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String,%20int)

new String("a,b,c,,,").split(",")

の結果は、

{"a", "b", "c"}
{"a", "b", "c", "", "", ""}

を取るには、以下のように、-1をつける必要があります。

new String("a,b,c,,,").split("," , -1)


APIドキュメントには、-2とかいう変な数値で例がありますが、基本的に-1でも-2でも負の数値なら同じ。最初に読んだときは意味がわからず、華麗にスルーしてしまったので、こんな羽目になりました。
ドキュメント読めっていうのは当然ですが、この仕様はひどい。perlとかから持ってきたんでしょうかね。

ちなみに、他の言語で "a,b,c,,,".split()すると、こんな感じでした。個人的には、python大好きだし、隠れた仕様がないpythonが一番いいと思うんですが、もしかして、後ろの空文字を期待する自分が変なんでしょうか?
python : ["a", "b", "c", "", "", ""]
perl : ["a", "b", "c"]
ruby : ["a", "b", "c"]