javaで使われるsplitとは?利用方法について解説
- SE
- javaで使われるsplitとは、どのようなことができるのでしょうか?
- PM
- 引数に指定された文字をもとに文字列の分割ができます。
目次
splitとは?
splitは、java.lang.Stringクラス内に実装されているメソッドの一つです。引数に指定された文字をもとに文字列の分割を行います。分割された文字列は、String型の配列で返ってきます。splitの引数は、javaでは正規表現を指定することになっていますので、空白やタブ、改行を表す正規表現を使って文字列を分割することが可能です。しかし、正規表現の構文が無効な場合は、PatternSyntaxExceptionが発生します。splitは、実務でも多く利用されるメソッドの一つですので、しっかりと使い方を覚えていきましょう。
javaでのsplitの利用方法
javaで実際にsplitを利用する場合、以下のような分割方法を利用することが多いです。・カンマで分割・ピリオドで分割・空白で分割・改行コードで分割このうち、カンマと空白そのまま指定することが可能です。空白は、正規表現でもただの空白でも指定することが可能になっています。ピリオドと改行コードは、正規表現を利用しなければ分割できません。では、それぞれの利用方法についてコードを交えてご説明していきます。
カンマで分割
分割を行う場合に一番わかりやすいのが、カンマで分割されている場合です。これはsplitの引数にそのままカンマを指定することによって分割することが可能です。では、カンマを利用した分割方法を、コードで確認していきましょう。public class Main { public static void main(String[] args) { String str = “”えんぴつ,ボールペン,シャープペン,消しゴム””; System.out.println(“”分割前:”” + str); String[] stationeries = str.split(“”,””); System.out.println(“”分割後””); for (String stationery : stationeries) { System.out.println(stationery); } }}実行結果分割前:えんぴつ,ボールペン,シャープペン,消しゴム分割後えんぴつボールペンシャープペン消しゴムこのように、カンマごとに分割されて配列に格納されていることが確認できます。
ピリオドで分割
カンマと似ていますが、javaではピリオドで分割する場合は、ピリオドをそのまま指定しても分割することはできません。これは、ピリオドが正規表現で利用される文字の一つだからです。javaで利用されている正規表現でピリオドは、「任意の1文字」を表します。このため、ピリオドをピリオドとして認識させたい場合は、バックスラッシュを利用して「\\.」と指定する必要があります。では、実際にピリオドで分割するためのコードを確認していきましょう。public class Main { public static void main(String[] args) { String str = “”えんぴつ.ボールペン.シャープペン.消しゴム””; System.out.println(“”分割前:”” + str); // 分割が成功する場合 String[] stationeries1 = str.split(“”\\.””); System.out.println(“”1回目の分割後””); for (String stationery1 : stationeries1) { System.out.println(stationery1); } // 分割が失敗する場合 String[] stationeries2 = str.split(“”.””); System.out.println(“”2回目の分割後””); for (String stationery2 : stationeries2) { System.out.println(stationery2); } }}実行結果分割前:えんぴつ.ボールペン.シャープペン.消しゴム1回目の分割後えんぴつボールペンシャープペン消しゴム2回目の分割後バックスラッシュを利用して分割した場合は、想定どおりにピリオドごとに正しく分割されていることが確認できます。逆にピリオドだけで指定した場合、正規表現として認識されてしまって分割に失敗し、配列に何も格納されていないことがわかります。このように、ピリオドをはじめとした正規表現でも利用されるメタ文字を使って分割したい場合には、バックスラッシュを利用して指定するようにしましょう。
空白で分割
空白で分割したい場合は、空白をそのまま指定する場合と、正規表現で指定する場合の2パターンで分割することが可能です。では、実際にコードを見ながら確認していきましょう。public class Main { public static void main(String[] args) { String str = “”えんぴつ ボールペン シャープペン 消しゴム””; System.out.println(“”分割前:”” + str); // 空白をそのまま指定 String[] stationeries1 = str.split(“” “”); System.out.println(“”1回目の分割後””); for (String stationery1 : stationeries1) { System.out.println(stationery1); } // 空白を正規表現で指定 String[] stationeries2 = str.split(“”\\s””); System.out.println(“”2回目の分割後””); for (String stationery2 : stationeries2) { System.out.println(stationery2); } }}実行結果分割前:えんぴつ ボールペン シャープペン 消しゴム1回目の分割後えんぴつボールペンシャープペン消しゴム2回目の分割後えんぴつボールペンシャープペン消しゴム1回目と2回目の分割ではそれぞれ指定している文字が異なりますが、どちらも同じように分割できていることが確認できます。「\\s」は空白を表す正規表現のため、そのまま空白を指定したのと同様の動きをさせることができます。そのため、空白の場合はどちらの表現方法を利用しても構いません。
改行コードで分割
改行コードで分割する場合は、正規表現を利用して分割することになります。この際、改行を表す正規表現は「\n」または「\r\n」となります。それでは、実際にこの「\n」を使って改行された文字列を分割していきましょう。public class Main { public static void main(String[] args) { String str = “”えんぴつ\nボールペン\nシャープペン\n消しゴム””; System.out.println(“”分割前:”” + str); String[] stationeries = str.split(“”\n””); System.out.println(“”分割後””); for (String stationery : stationeries) { System.out.println(stationery); } }}実行結果分割前:えんぴつボールペンシャープペン消しゴム分割後えんぴつボールペンシャープペン消しゴム文字列に改行コードを入れることにより、最初から改行した状態で表示されていることがわかります。また、stationeriesに文字列が格納されているため、改行コードで分割もできていることが確認できます。
応用:分割した結果をListに変換する
分割した結果を、配列ではなくListで取得したい場合があります。そのような場合には、一度分割した後にArraysクラスのasListメソッドを利用すると、配列をListに変換することが可能になります。以下のコードで確認していきましょう。import java.util.Arrays;import java.util.List;public class Main { public static void main(String[] args) { String str = “”えんぴつ,ボールペン,シャープペン,消しゴム””; System.out.println(“”分割前:”” + str); List stationeries = Arrays.asList(str.split(“”,””)); System.out.println(“”分割後””); for (String stationery : stationeries) { System.out.println(stationery); } }}実行結果分割前:えんぴつ,ボールペン,シャープペン,消しゴム分割後えんぴつボールペンシャープペン消しゴムこのように、asListを利用すればListに変換できることが確認できます。
- SE
- javaで使われるsplitで簡単に分割できるのですね。
- PM
- そうですね。splitを利用してアプリケーション開発を行いましょう!
splitの利用方法を覚えよう
splitはjavaの中でも多く利用される機能の一つです。実務でも利用されているため、利用方法を覚えておいて損はないでしょう。また、分割に使用したい文字によっては正規表現を使う必要が出てきます。普段あまり正規表現を使わない方でも、正規表現を試しに使ってみるいい機会になるでしょう。まずは、実際に使ってみて利用方法を確認してみてください。そして、splitを利用したアプリケーションをどんどん作っていきましょう。