javaで使われるsplitとは?利用方法について解説

- システム
エンジニア - javaで使われるsplitとは、どのようなことができるのでしょうか?
- プロジェクト
マネージャー - 引数に指定された文字をもとに文字列の分割ができます。
splitとは?
splitは、java.lang.Stringクラス内に実装されているメソッドの一つです。引数に指定された文字をもとに文字列の分割を行います。分割された文字列は、String型の配列で返ってきます。splitの引数は、javaでは正規表現を指定することになっていますので、空白やタブ、改行を表す正規表現を使って文字列を分割することが可能です。しかし、正規表現の構文が無効な場合は、PatternSyntaxExceptionが発生します。splitは、実務でも多く利用されるメソッドの一つですので、しっかりと使い方を覚えていきましょう。
javaでのsplitの利用方法
javaで実際にsplitを利用する場合、以下のような分割方法を利用することが多いです。
・カンマで分割
・ピリオドで分割
・空白で分割
・改行コードで分割
このうち、カンマと空白そのまま指定することが可能です。空白は、正規表現でもただの空白でも指定することが可能になっています。ピリオドと改行コードは、正規表現を利用しなければ分割できません。では、それぞれの利用方法についてコードを交えてご説明していきます。
カンマで分割
分割を行う場合に一番わかりやすいのが、カンマで分割されている場合です。これはsplitの引数にそのままカンマを指定することによって分割することが可能です。では、カンマを利用した分割方法を、コードで確認していきましょう。
1
2
3
4
5
6
7
8
9
10
11
|
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);
}
}
}
|
実行結果
1
2
3
4
5
6
|
分割前:えんぴつ,ボールペン,シャープペン,消しゴム
分割後
えんぴつ
ボールペン
シャープペン
消しゴム
|
このように、カンマごとに分割されて配列に格納されていることが確認できます。
ピリオドで分割
カンマと似ていますが、javaではピリオドで分割する場合は、ピリオドをそのまま指定しても分割することはできません。これは、ピリオドが正規表現で利用される文字の一つだからです。javaで利用されている正規表現でピリオドは、「任意の1文字」を表します。このため、ピリオドをピリオドとして認識させたい場合は、バックスラッシュを利用して「\\.」と指定する必要があります。では、実際にピリオドで分割するためのコードを確認していきましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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
3
4
5
6
7
|
分割前:えんぴつ.ボールペン.シャープペン.消しゴム
1回目の分割後
えんぴつ
ボールペン
シャープペン
消しゴム
2回目の分割後
|
バックスラッシュを利用して分割した場合は、想定どおりにピリオドごとに正しく分割されていることが確認できます。逆にピリオドだけで指定した場合、正規表現として認識されてしまって分割に失敗し、配列に何も格納されていないことがわかります。このように、ピリオドをはじめとした正規表現でも利用されるメタ文字を使って分割したい場合には、バックスラッシュを利用して指定するようにしましょう。
空白で分割
空白で分割したい場合は、空白をそのまま指定する場合と、正規表現で指定する場合の2パターンで分割することが可能です。では、実際にコードを見ながら確認していきましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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
3
4
5
6
7
8
9
10
11
|
分割前:えんぴつ ボールペン シャープペン 消しゴム
1回目の分割後
えんぴつ
ボールペン
シャープペン
消しゴム
2回目の分割後
えんぴつ
ボールペン
シャープペン
消しゴム
|
1回目と2回目の分割ではそれぞれ指定している文字が異なりますが、どちらも同じように分割できていることが確認できます。「\\s」は空白を表す正規表現のため、そのまま空白を指定したのと同様の動きをさせることができます。そのため、空白の場合はどちらの表現方法を利用しても構いません。
改行コードで分割
改行コードで分割する場合は、正規表現を利用して分割することになります。この際、改行を表す正規表現は「\n」または「\r\n」となります。それでは、実際にこの「\n」を使って改行された文字列を分割していきましょう。
1
2
3
4
5
6
7
8
9
10
11
|
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);
}
}
}
|
実行結果
1
2
3
4
5
6
7
8
9
|
分割前:えんぴつ
ボールペン
シャープペン
消しゴム
分割後
えんぴつ
ボールペン
シャープペン
消しゴム
|
文字列に改行コードを入れることにより、最初から改行した状態で表示されていることがわかります。また、stationeriesに文字列が格納されているため、改行コードで分割もできていることが確認できます。
応用:分割した結果をListに変換する
分割した結果を、配列ではなくListで取得したい場合があります。そのような場合には、一度分割した後にArraysクラスのasListメソッドを利用すると、配列をListに変換することが可能になります。以下のコードで確認していきましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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);
}
}
}
|
1
2
3
4
5
6
|
実行結果分割前:えんぴつ,ボールペン,シャープペン,消しゴム
分割後
えんぴつ
ボールペン
シャープペン
消しゴム
|
このように、asListを利用すればListに変換できることが確認できます。
- システム
エンジニア - javaで使われるsplitで簡単に分割できるのですね。
- プロジェクト
マネージャー - そうですね。splitを利用してアプリケーション開発を行いましょう!
splitの利用方法を覚えよう
splitはjavaの中でも多く利用される機能の一つです。実務でも利用されているため、利用方法を覚えておいて損はないでしょう。また、分割に使用したい文字によっては正規表現を使う必要が出てきます。普段あまり正規表現を使わない方でも、正規表現を試しに使ってみるいい機会になるでしょう。まずは、実際に使ってみて利用方法を確認してみてください。そして、splitを利用したアプリケーションをどんどん作っていきましょう。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)