Java - 文字列を分割する方法

Java –文字列を分割する方法

文字列を分割するには、String.split(regex)を使用します。 次の例を確認します。

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

出力

    012
    3456789

Note
このsplit (regex)は、引数として正規表現を取ります。ピリオド/ドットのように、regex special charactersをエスケープすることを忘れないでください。

1. 期間/ドットを分割する

ピリオド/ドットは正規表現の特殊文字です。ダブルバックラッシュ\.でエスケープするか、Pattern.quoteメソッドを使用する必要があります。

TestSplit.java

package com.example.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.example.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クラスを使用して文字列を分割することを好みました。 これは、StringTokenizerクラスがJDK 1.0以降で使用可能であり、String.split()がJDK1.4以降で使用可能であるためです。

TestSplit.java

package com.example.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

Note
このStringTokenizerはレガシークラスであり、互換性の理由で保持されています。使用はお勧めしません。 string.split()を使用してください。