久しぶりにJavaを書いていて.
で文字列を区切ろうとしたら軽くハマった。
Pythonならこんな感じ。
hoge = '172.0.0.1'
fuga = hoge.split('.') # => ['172', '0', '0', '1']
同じ感覚でJavaで
String hoge = "172.0.0.1";
String[] fuga = hoge.split(".");
と書いてしまうと、長さ0の配列が返ってくる。
原因はJavaのsplitは引数にpattern文字列をとるから。
.
は任意の一文字にマッチしてしまう。( ..)φメモメモ
String hoge = "172.0.0.1";
String[] fuga = hoge.split("7."); // => ["1", ".0.0.1"]
Pythonと同じ動作を期待するならこう。
import java.util.regex.Pattern;
String hoge = "172.0.0.1";
String[] fuga = hoge.split(Pattern.quote("."));