
執筆者

Javaのsplitでドットが区切られない
splitでドット「.」を指定した場合、文字列が正しく区切られないのは「正規表現」が原因です。
※正規表現…文字列の集合を一つの文字列で表現する方法
正規表現の文字一覧
splitは区切り対象の文字列が正規表現文字の場合、正規表現を用いて文字列の分割を行います。
ドット「.」は、正規表現で「任意の1文字」を表す特殊文字の為、単純に指定した場合、思惑通りに分割されません。
正しくはエスケープする必要がありまして、正規表現文字の場合、前方に「\\」を付与する必要があります。
試しにプログラムを見ていきましょう!
splitにドットを指定したプログラム
試しにIPアドレスを分割するプログラムを例題とします。
間違ったプログラム例
1 2 3 4 5 6 7 8 9 10 11 |
// ダメなプログラム public class Main { public static void main(String[] args) { String ipAddress = "127.0.0.1"; String[] array = ipAddress.split("."); for (String ip : array) { System.out.println(ip); } } } |
実行結果
1 |
// 実行結果は、何も表示されません。 |
正しいプログラム
1 2 3 4 5 6 7 8 9 10 11 |
// 正しいプログラム public class Main { public static void main(String[] args) { String ipAddress = "127.0.0.1"; String[] array = ipAddress.split("\\."); // ←前方に\\を挿入 for (String ip : array) { System.out.println(ip); } } } |
実行結果
1 2 3 4 5 |
// 実行結果 127 0 0 1 |
splitにパイプを指定したプログラム
こちらはフルーツを分割するプログラムを例題とします。
間違ったプログラム例
1 2 3 4 5 6 7 8 9 10 11 |
// ダメなプログラム public class Main { public static void main(String[] args) { String fruits = "りんご|ぶどう|みかん"; String[] array = fruits.split("|"); for (String fruit : array) { System.out.println(fruit); } } } |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
// 実行結果 り ん ご | ぶ ど う | み か ん |
正しいプログラム
1 2 3 4 5 6 7 8 9 10 11 |
// 正しいプログラム public class Main { public static void main(String[] args) { String fruits = "りんご|ぶどう|みかん"; String[] array = fruits.split("\\|"); // ←前方に\\を挿入 for (String fruit : array) { System.out.println(fruit); } } } |
実行結果
1 2 3 4 |
// 実行結果 りんご ぶどう みかん |
splitで標準入力の文字列は注意が必要
標準入力の値を使用する時は「next()」メソッドを使用しない方が良いです。
推奨しないケース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 標準入力値を区切る例 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); try { String line = sc.next(); // ←nextは使用しない方が良い String[] array = line.split(" "); for (String s : array) { System.out.println(s); } } finally { if (sc != null) { sc.close(); } } } } |
以下の値を入力した場合、「10」のみ返却されます
入力値
「next()」メソッドは最初の半角スペースまでの文字を入力値として扱う為です。
入力値を半角スペースで区切る場合は「nextLine()」メソッドを利用しましょう。
今回は以上になります。

Java入門にオススメの書籍2冊【現役エンジニアが厳選選択】
Javaでオススメの資格は「OCJ-P」です【実体験あり】