[java]Javaのsplitでちょっと混乱した。

Javaのsplitの話。
仕事で、"aa::bb::cc::dd::::"な文字列を{"aa","bb","cc","dd","",""}みたいな配列に変換しないといけなくなって、
最初は次みたいにやって失敗。

String[] str = "aa::bb::cc::dd::::".split("::");

  • > ["aa","bb","cc","dd"]みたいになってしまった。

第2引数に負の数を入れたら解決
String[] str = "aa::bb::cc::dd::::".split("::",-1); -> {"aa","bb","cc","dd","",""}

レファレンスを見ると、splitの第2引数は、limitパラメータというもので、返り値の配列のサイズを指定するものとのこと

ちょっと試してみると、rubyでも同じように第2引数で制御していた。
"aa::bb::cc::::".split("::") -> ["aa","bb","cc"]
"aa::bb::cc::::".split("::",-1) -> ["aa","bb","cc","",""]

javascriptでは、第2引数はなくてよかった。
"aa::bb::cc::::".split("::") -> ["aa","bb","cc","",""]

最近javascriptでなれてたから忘れてたのかしら。

JavaのString.split(”,”)は、split(”,”, -1)にしたほうがいい - $ cd ./.にも同じことが書いてた。