Javaで文字列を「.(ドット)」でsplitする

  • 6
    Like
  • 2
    Comment

久しぶりに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("."));