Javaで文字列を分割する方法について書いています。
文字列を分割するときには、文字列からsplitメソッドを呼び出すと良いです。
最初にsplitメソッドの使い方を解説して、その後に使いそうなサンプルコードを3つ書きました。
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。
splitメソッドの使い方
文字列からsplitメソッドを呼び出すことで、文字列を分割することができます。
例えば、下記のように使うことができます。
String fruitsText = "orange grape apple banana";
String[] fruits = fruitsText.split(" ");
for (String fruit : fruits) {
System.out.println(fruit);
}
最初にfruitsText
変数に「orange grape apple banana
」という文字列を代入しています。
次の処理で、fruitsText
変数からsplitメソッドを呼び出しています。
splitメソッドに、引数として渡すのは正規表現です。
渡した正規表現で、文字列が分割され、配列として返ってきます。
今回は引数として、半角スペースを渡しているので、半角スペースが区切り文字列になり分割されます。
fruitsText
変数のそれぞれの文字列が、半角スペースで区切られて配列で返ってきます。
最後に返ってきた配列の要素数分ループして出力しています。
プログラムを実行すると、下記のように出力されます。
orange
grape
apple
banana
指定した半角スペースで文字列が分割されて、配列で返ってきたことが確認できました。
適用回数を指定する
splitメソッドの第2引数には、適用回数を指定することができます。
適用回数は分割する個数の指定です、例えば下記のように指定します。
String fruitsText = "orange grape apple banana";
String[] fruits = fruitsText.split(" ", 3);
for (String fruit : fruits) {
System.out.println(fruit);
}
先ほどのプログラムを少し変えました。
splitメソッドを呼び出しているところで、第2引数に「3」を渡しています。
これで、文字列は配列に「3」分割されます。
プログラムを実行すると、下記のように出力されました。
orange
grape
apple banana
指定した個数分、文字列が配列の要素に分割されたことが確認できました。
引数と返り値まとめ
splitメソッドの引数と返り値をまとめます。
引数
第1引数は必須で、正規表現を指定する。
第2引数はオプションで、分割の適用回数を指定する。
"分割したい文字列".split("必須な正規表現", [オプション:分割適用回数])
戻り値
分割された文字列が、文字列の配列として返ってくる。
splitメソッドのサンプルコード3選
3つのパターンでsplitメソッドを使ったサンプルコードを書いてみました。
カンマ区切りで分割する
CSVなどカンマ区切りで、文字列を分割したいときには、そのままカンマを渡すと良いです。
String drinksText = "coffee,water,milk,cola";
String[] drinks = drinksText.split(",");
for (String drink : drinks) {
System.out.println(drink);
}
最初にdrinksText
変数に「coffee,water,milk,cola
」という文字列を代入しています。
次の処理で、drinksText
変数からsplitメソッドを呼び出して、カンマ(,
)を渡しています。
これで、カンマで文字列が区切られて、配列として返ってきます。
プログラムを実行すると、下記のようにカンマで分割されたことが確認できました。
coffee
water
milk
cola
数値を正規表現で指定して分割する
数値の箇所を正規表現で指定して分割してみます。
String text = "red123blue23green345yellow";
String[] colors = text.split("[0-9]+");
for (String color : colors) {
System.out.println(color);
}
最初にtext
変数に、数値と文字を混ぜた「red123blue23green345yellow
」という文字列を代入しています。
次の処理で、splitメソッドに「[0-9]+
」を渡しました。
これで、0から9の数値が1回以上続く箇所を指定しています。
colors
変数に結果を受け取って出力すると、下記のようになりました。
red
blue
green
yellow
正規表現で指定した箇所で、文字列の配列に分割されました。
ファイル名(ドット)を分割する
ファイル名(拡張子を含む)ものを分割するときです。
このときにドットを指定したくなりますが、正規表現でドットは「任意の1文字」という特別な意味を持つため、エスケープして指定する必要があります。
String fileNameText = "マイファイル.txt";
String[] fileNames = fileNameText.split("\\.");
for (String fileName : fileNames) {
System.out.println(fileName);
}
最初にfileNameText
変数に、文字列の「マイファイル.txt
」を指定しました。
次の処理で、fileNameText
変数にsplitメソッドを呼び出して分割していますが、ドットをエスケープして「\\.
」と指定しています。
これで、文字列がドットで分割されます。
プログラムを実行すると、下記のようにドットで分割されました。
マイファイル
txt
Javaで文字列を分割する方法まとめ
今回はJavaで文字列を分割する方法についてまとめました。
記事の内容をまとめると、下記になります。
・splitメソッドの第1引数には正規表現(必須)を指定して、第2引数には適用回数(オプション)を指定する。
・文字列をカンマで分割するときには、そのままカンマを指定できた。
・文字列をドットで分割するには、ドットをエスケープする必要があった。
コメント