文字列を分割するには `String.split(regex)`を使います。次の例を確認してください。

    String phone = "012-3456789";
    String[]output = phone.split("-");
    System.out.println(output[0]);
    System.out.println(output[1]);

出力

    012
    3456789

1.ピリオド/ドットを分割する

ピリオド/ドットは正規表現の特殊文字です。ダブルバックラッシュ `\\。`でエスケープするか、 `Pattern.quote`メソッドを使用しなければなりません。

TestSplit.java

package com.mkyong.test

import java.util.regex.Pattern;

public class TestSplit {

    public static void main(String[]args) {

        String test = "abc.def.123";
        String[]output = test.split("\\.");

       //alternative
       //String[]output = test.split(Pattern.quote("."));

        System.out.println(output[0]);
        System.out.println(output[1]);
        System.out.println(output[2]);

    }

}

出力

abc
def
123

分割前の一般的なチェック。

TestSplit.java

package com.mkyong.test

import java.util.regex.Pattern;

public class TestSplit {

    public static void main(String[]args) {

        String test = "abc.def.123";
        if(test.contains(".")){
            String[]output = test.split("\\.");
            if(output.length!=3){
                throw new IllegalArgumentException(test + " - invalid format!");
            }else{
                System.out.println(output[0]);
                System.out.println(output[1]);
                System.out.println(output[2]);
            }
        }else{
            throw new IllegalArgumentException(test + " - invalid format!");
        }

    }

}

2. StringTokenizerの例

昔、Java開発者は

StringTokenizer`クラスを使用して文字列を分割したがっています。これは、JDK 1.0以来 `StringTokenizer`クラスが利用可能であり、

String.split() `がJDK 1.4以降に利用可能であるためです

TestSplit.java

package com.mkyong.test

import java.util.StringTokenizer;

public class TestSplit {

    public static void main(String[]args) {

        String test = "abc.def.123";

        StringTokenizer token = new StringTokenizer(test, ".");

        while (token.hasMoreTokens()) {
            System.out.println(token.nextToken());
        }

    }

}

出力

abc
def
123

  • 注意** この `StringTokenizer`は互換性の理由から残されたレガシークラスですが、使用はお勧めできません! `string.split()`を使用してください。