2分で理解!Javaの文字列を分割するsplitメソッド【Stringクラス】

Javaで文字を分割するsplit
  • このエントリーをはてなブックマークに追加
  • Pocket

Javaで文字列を分割するにはStringクラスのsplitメソッドを使う。

このページではsplitクラスの使い方をすぐにわかるようにまとめた。分割数を制限する方法や注意点などもまとめているため参考にしていただければと思う。

文字列を分割する(split)

splitメソッド

文字列.split(String regrex )

regrex:正規表現一致

戻り値の型

String[]

内容

この文字列を指定した正規表現に一致する位置で分割する。

split(String regrex)は、文字列をregrexで指定された正規表現に一致するところで分割し、String型の配列として返すメソッドだ。csvファイルというカンマ区切りの文字列からなるファイルを操作するときなど、よく使われるメソッドだ。

※正規表現とは文字列のパターンを表す表現方法だ。 通常の文字(a~z)と特殊文字でそのパターンを表現している。そのパターンを用いることによって「数字に一致する」など複雑な条件にすることもできる。

サンプルコード

public class StringSample10 {
    public static void main(String[] args) {
        String message ; 
        message = "赤1青2黄色3白5緑" ";//[1]
        String[] resultArray = message.split("[0-9]");//[2]
        
        for (int i = 0; i < resultArray.length; i++) {//[3]
            System.out.println(resultArray[i]);//[4]
        }
    }
}

実行結果

赤
青
黄色
白
緑
黒

サンプルコードの説明

  • [1] String型の変数messageの初期化。
  • [2] 変数messageをsplit()メソッドを使い0から9の数字に一致したところで分割しresultArrayに代入。
  • [3] 配列resultArrayをfor文で要素の数だけ繰り返す。
  • [4] 配列resultArrayに代入されている値を出力。 

文字列の数を指定したいとき

limitが使える。

split(String regrex ,int limit)

戻り値の型

String[]

内容

この文字列を指定した正規表現に一致する位置で分割する。

split(String regrex, int limit)は、文字列をregrexで指定された正規表現に一致するところで分割する。文字列の分割はlimitで指定された回数-1になるまで行われる。

つまり、返されるString型の配列の要素数はlimitで指定された数より多くなることがなくなる。

サンプルコード

public class StringSample11 {
    public static void main(String[] args) {
        String message ; 
        message = "赤、青、黄色、白、緑、黒";//[1]
        
        String[] resultArray = message.split("、",3);//[2]
        
        for (int i = 0; i < resultArray.length; i++) {//[3]
            System.out.println(resultArray[i]);//[4]
        }
    }
}

実行結果

赤
青
黄色、白、緑、黒

サンプルコードの説明

  • [1] String型の変数messageの初期化。
  • [2] 変数messageをsplit()メソッドを使い「、」に一致したところで2回まで分割しresultArrayに代入。
  • [3] 配列resultArrayをfor文で要素の数だけ繰り返す。
  • [4] 配列resultArrayに代入されている値を出力。

正規表現で区切るときの注意

splitメソッドの引数String regrexには正規表現のパターンを指定できる。このとき気をつけてほしいのが特別な意味を持つ文字で区切りたいと思う場合だ。

たとえば、ドット(.)は正規表現では「任意の文字」という意味をもつ。

そのため、ドットのみを引数で指定してもドットで分割した結果は返ってこない。

このような正規表現で使う特別な意味を持った文字を単なる文字として扱いたい場合には

「エスケープ処理」が必要となる。

ドットの場合は「¥¥」を入れることで単なる文字として扱われるようになる。

では、サンプルコードで確認しよう。

サンプルコード

public class StringSample10 {
    public static void main(String[] args) {
        String message ; 
        message = "aaa.bbb.ccc.ddd";//[1]
        String[] resultArray1 = message.split(".");//[2]
        String[] resultArray2 = message.split("\\.");//[3]
         System.out.println("エスケープ処理をしなかった場合の分割数:" + resultArray1.length); //[4]
         System.out.println("エスケープ処理をした場合の分割数:" +resultArray2.length); [5]
        for (int i = 0; i < resultArray1.length; i++) {//[6]
            System.out.println(resultArray1[i]);//[7]
        }
         for (int i = 0; i < resultArray2.length; i++) {//[8]
            System.out.println(resultArray2[i]);//[9]
        }
    }
}

実行結果

エスケープ処理をしなかった場合の分割数:0
エスケープ処理をした場合の分割数:4
aaa
bbb
ccc
ddd

サンプルコードの説明

  • [1] 変数messageに「bbb.ccc.ddd」を代入。
  • [2] 変数messageをsplit()メソッドを使い「.」で一致したところで分割しresultArray1に代入。
  • [3] 変数messageをsplit()メソッドを使いエスケープした「\\.」で一致したところで分割しresultArray2に代入。
  • [4]resultArray1の配列の要素数(→分割された数)を出力。
  • [5]resultArray2の配列の要素数(→分割された数)を出力。
  • [6] 配列resultArray1をfor文で要素の数だけ繰り返す。
  • [7] 配列resultArray1に代入されている値を出力。
  • [8] 配列resultArray2をfor文で要素の数だけ繰り返す。
  • [9] 配列resultArray3に代入されている値を出力。

まとめ

このページではJavaで文字列を分割するために使うsplitについてまとめた。

ただ、分割するだけでなく、分割数を制限することなども可能だ。ぜひ参考にしていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する