Javaの正規表現(java.util.regex)でテキストを分割する方法|split()メソッドの使い方
Javaでは、正規表現を利用して文字列を簡単に分割することができます。
Stringクラスのsplit()メソッドは、引数として正規表現を受け取り、入力テキストをトークンに分割して、その結果を文字列配列(String[])として返します。
サンプルコード:Stringクラスのsplit()メソッドを使う
以下の例では、ユーザーから入力されたテキストを、数字(\d)を区切り文字として分割しています。
import java.util.Scanner;
public class Example{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter input text: ");
String input = sc.nextLine();
String[] strArray = input.split("\\d");
for (int i=0; i<strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}実行結果
Enter input text: 1Ramu 2Raju 3Radha 4Rahman 5Rachel Ramu Raju Radha Rahman Rachel
入力文字列内の数字が区切り文字として認識され、「Ramu」「Raju」などの名前ごとに分割されていることがわかります。
java.util.regexパッケージを使った文字列の分割
Stringクラスの代わりに、java.util.regex.Patternクラスのsplit()メソッドを使って文字列を分割することもできます。
このメソッドは文字列を引数として受け取り、コンパイル済みの正規表現パターンに基づいてテキストをトークンに分割し、その結果を文字列配列として返します。
手順
Pattern.compile()メソッドで正規表現からPatternオブジェクトを作成する- Patternオブジェクトの
split()メソッドに入力文字列を渡して分割する
サンプルコード:Patternクラスのsplit()メソッドを使う
import java.util.Scanner;
import java.util.regex.Pattern;
public class SplittingString{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter input text: ");
String input = sc.nextLine();
String regex = "\\d";
// Patternオブジェクトの作成
Pattern pattern = Pattern.compile(regex);
String[] strArray = pattern.split(input);
for (int i=0; i<strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}実行結果
Enter input text: 1Ramu 2Raju 3Radha 4Rahman 5Rachel Ramu Raju Radha Rahman Rachel
まとめ
- 単純な文字列分割にはStringクラスの
split()が手軽です。 - 同じ正規表現パターンを繰り返し使う場合は、Patternクラスでパターンを事前にコンパイルしておくことで、処理を効率化できます。
-
Javaの正規表現(RegEx)で空白文字にマッチさせる方法
Javaの正規表現におけるメタ文字「\s」は、指定された文字列内の空白文字(スペース、タブ、改行など)にマッチします。この記事では、「\s」を使って空白文字を検出・処理する具体的な方法を2つのサンプルコードとともに解説します。例1:文字列中の空白文字の数をカウントする次の例では、ユーザーから入力された文字列に対して正規表現「\s」を適用し、Matcherクラスのfind()メソッドを使って空白文字の出現回数を数えています。import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Patter
-
JavaのGsonで@SerializedNameアノテーションを使ってJSONプロパティ名を変更する方法
JavaのオブジェクトをJSONに変換する際、クラスのフィールド名とは異なるプロパティ名で出力したいケースはよくあります。そんなときに役立つのが、Gsonが提供する@SerializedNameアノテーションです。このアノテーションを付与すると、シリアライズ(JSONへの変換)・デシリアライズ(JSONからの復元)の両方において、指定した名前がフィールド名として使用されます。なお、@SerializedNameはGsonインスタンスに設定されたデフォルトの命名ポリシーを含む、あらゆるFieldNamingPolicyを上書きします。命名ポリシー自体を切り替えたい場合は、GsonBuilderク