スライドショー

【Java入門】文字列を分割するsplitメソッドの使い方(List化も解説)

こんにちは!フリーランスのオータケです。

Javaで特定の文字を使って文字列を分割したいと思ったことがありませんか?

splitメソッドを使うことで実現できます。この記事では、splitメソッドの使い方について

  • splitメソッドとは
  • splitメソッドの使い方
  • splitの区切り文字を指定
  • という基本的な内容から

  • 分割した結果をListで受け取る方法
  • 正規表現を用いる方法
  • splitの使用上の注意点
  • など具体的な内容についても解説していきます。

    今回は文字列をint型に変換する方法について、使い方をわかりやすく解説します!

    splitメソッドとは

    splitメソッドは、対象となる文字列を指定した区切り文字によって分割し、それぞれを配列の要素として格納します。

    splitメソッドは次のように記述します。

    String型変数名.split("区切り文字", 分割後の要素数)

    第1引数の区切り文字は、正規表現で指定します。正規表現については後ほど詳しく解説します。

    第2引数の分割後の要素数は省略することも可能です。省略した場合は、配列の要素数は制限されません。また、配列の終わりの空の文字列がある場合には破棄されます。

    第2引数がゼロより大きい場合、配列の要素数は指定した引数の値以下になります。第2引数が負の値の場合には、配列の要素数は制限されず、配列の終わりの空の文字列は削除されません。

    第2引数がゼロの場合は省略したときと同様に、配列の要素数は制限されずに、後続の空の文字列は破棄されます。

    splitメソッドの使い方

    ここではsplitメソッドで区切り文字を指定して、文字列を分割する方法を解説します!

    splitメソッドで文字列を分割する方法を次のプログラムで確認してみましょう!

    public class Main {
    
        public static void main(String[] args) {
            String str = "apple,orange,melon";
            System.out.println("str: " + str);
    
            String[] fruits = str.split(",");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    }

    実行結果:

    str: apple,orange,melon
    apple
    orange
    melon

    ここでは文字列をカンマで区切って配列に分割しています。これでsplitメソッドで文字列を分割することができました!

    末尾の空文字(“”)の要素を除外しない方法

    ここではsplitメソッドで文字列を分割するときに、末尾の空の要素を削除しない方法を解説します!

    末尾の空の要素を削除しないようにするには、splitメソッドの第2引数に負の値の”-1”などを指定します。splitメソッドで末尾の空の要素を削除しない方法を次のプログラムで確認してみましょう!

    public class Main {
    
        public static void main(String[] args) {
            String str = "apple,orange,melon,,";
            System.out.println("str: " + str);
    
            String[] fruits = str.split(",", 0);
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
            System.out.println("配列のサイズ:" + fruits.length);
    
            String[] fruits2 = str.split(",", -1);
            for (String fruit : fruits2) {
                System.out.println(fruit);
            }
            System.out.println("配列のサイズ:" + fruits2.length);
        }
    }

    実行結果:

    str: apple,orange,melon,,
    apple
    orange
    melon
    配列のサイズ:3
    apple
    orange
    melon
    
    
    配列のサイズ:5

    2度目の分割では、splitメソッドの第2引数に負の値の”-1”を指定しているため、末尾の空文字の要素が削除されずに残っています。

    これでsplitメソッドで末尾の空文字(“”)の要素を除外せずに文字列を分割することができました!

    splitの区切り文字を指定するサンプルコード

    ここでは、splitメソッドを実際に使用する際の参考になるように、様々な区切り文字を指定するサンプルコードを解説していきます。

    改行コードで分割

    改行コードで文字分割を行う場合は引数に「\n」を指定してあげましょう。

    public class Main {
     
        public static void main(String[] args) {
            String str = "apple\norange\nmelon";
            System.out.println(str);
     
            String[] fruits = str.split("\n");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    
    }

    実行結果:

    apple
    orange
    melon
    apple
    orange
    melon

    タブで分割

    タブ文字で分割を行う場合は引数に「\t」を指定してあげましょう。

    public class Main {
     
        public static void main(String[] args) {
            String str = "apple\torange\tmelon";
            System.out.println("str: " + str);
     
            String[] fruits = str.split("\t");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    
    }

    実行結果:

    str: apple      orange  melon
    apple
    orange
    melon

    空白で分割

    空白(半角スペース)で分割を行う場合は、正規表現を使わなければ、そのまま半角スペースを引数に渡してあげるといいでしょう。

    public class Main {
     
        public static void main(String[] args) {
            String str = "apple orange melon";
            System.out.println("str: " + str);
     
            String[] fruits = str.split(" ");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    
    }

    実行結果:

    str: apple orange melon
    apple
    orange
    melon

    ピリオドで分割

    ピリオドで分割を行う場合は、引数に「.」を指定してあげても上手くいきません。

    これはsplitメソッドの第1引数は、正確には正規表現で指定するからです。正規表現で「.」は「何か1文字」を表します。このままではピリオドとして扱われないために、「\\.」として指定します。

    なお、正規表現については後ほど詳しく説明します。

    public class Main {
     
        public static void main(String[] args) {
            String str = "apple.orange.melon";
            System.out.println("str: " + str);
     
            String[] fruits = str.split("\\.");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    
    }

    実行結果:

    str: apple.orange.melon
    apple
    orange
    melon

    カンマで分割

    ピリオドで分割を行う場合は引数に「,」を指定してあげましょう。

    public class Main {
     
        public static void main(String[] args) {
            String str = "apple,orange,melon";
            System.out.println("str: " + str);
     
            String[] fruits = str.split(",");
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    
    }

    実行結果:

    str: apple,orange,melon
    apple
    orange
    melon

    分割した結果をListで受け取る方法

    文字列を分割しその結果をListで受け取りたい場合は、splitメソッドを使用後にasListを使って変換することで実現できます。

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
     
        public static void main(String[] args) {
            String str = "apple,orange,melon";
            System.out.println("str: " + str);
     
            List<String> fruits = Arrays.asList(str.split(","));
            System.out.println(fruits);
        }
    
    }

    実行結果:

    str: apple,orange,melon
    [apple, orange, melon]

    正規表現を用いる方法

    先ほども少し述べましたが、splitメソッドの第1引数は正確には正規表現を指定します。

    正規表現を使って文字列を分割してみましょう。

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
     
        public static void main(String[] args) {
            String str = "apple,orange,melon";
            System.out.println("str: " + str);
     
            // ","で始まり任意の文字が0回以上繰り返された後で","が出現する
            List<String> fruits = Arrays.asList(str.split(",.*,"));
            System.out.println(fruits);
        }
    
    }

    実行結果:

    str: apple,orange,melon
    [apple, melon]

    このサンプルコードでは、正規表現で使われる文字「.」「*」で指定しています。

    Javaの正規表現については次の記事がオススメです!

    【Javaで正規表現】文字列をチェックするパターンの書き方とサンプル
    更新日 : 2019年4月23日

    引数に空文字を指定して1文字ずつ分割

    引数に空文字を指定すると、1文字ずつ分割されます。

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
     
        public static void main(String[] args) {
            String str = "apple,orange,melon";
            System.out.println("str: " + str);
     
            List<String> fruits = Arrays.asList(str.split(""));
            System.out.println(fruits);
        }
    
    }

    実行結果:

    str: apple,orange,melon
    [a, p, p, l, e, ,, o, r, a, n, g, e, ,, m, e, l, o, n]

    対象文字列がnullの場合の注意点

    splitメソッドは対象となる文字列がnullの場合、例外NullPointerException が発生します。

    try-catch文で例外処理を行うか、使用する前にチェックすることをオススメします。

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
     
        public static void main(String[] args) {
            String str = null;
            System.out.println("str: " + str);
     
            if(str != null) {
                List<String> fruits = Arrays.asList(str.split(""));
                System.out.println(fruits);
            } else {
                System.out.println("文字列はnullです");
            }
        }
    
    }

    実行結果:

    str: null
    文字列はnullです

    String型のnullチェックをする方法については、こちらで詳しく解説していますのでぜひ参考にして下さい。

    【Java入門】String型のnullをチェックをする方法
    更新日 : 2019年4月6日

    また、Java8の新機能Optionalでのnullチェックができます。

    こちらで詳しく解説していますのでぜひ参考にして下さい。

    Java8の新機能を徹底解説!(ラムダ式、Streamなど)
    更新日 : 2017年12月20日

    まとめ

    いかがでしたか?文字を分割するにはsplitメソッドを使うことで簡単に分割することができました。

    そして分割した文字列をListで受け取りたい場合はasListを使うことも覚えておきましょう!

    LINEで送る
    Pocket

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    オータケ

    オータケ

    30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
    新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説