Javaで文字列を置換する方法について書いています。
文字列を置換するときには、文字列から下記のメソッドを呼び出します。
・replaceAllメソッド
・replaceFirstメソッド
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。
replaceメソッドで置換する
文字列からreplaceメソッドを呼び出すことで、「対象の文字列」を「指定した文字列」に置換することができます。
例えば、下記のように使います。
String text = "apple banana orange";
String result = text.replace("banana", "peach");
System.out.println(result); // apple peach orange
最初にtext
変数に対して、文字列の「apple banana orange
」を代入しています。
次の処理で、text
変数からreplaceメソッドを呼び出して置換しています。
replaceメソッドに指定している、第1引数が「置換対象の文字列」で、第2引数が「置換後の文字列」になります。
replaceメソッドを実行すると、結果として「置換された文字列」が返ってきます。
対象の文字列に「置換する文字列がない」ときには、元の文字列が返ってきます。
今回は「banana
」を「peach
」に置換しました。
プログラムを実行すると、下記のように「banana
」が「peach
」に置換されたことが確認できました。
apple peach orange
複数の対象があるとき
文字列の中に「複数の置換対象」があるときには全て置換されます。
先ほどのプログラムを少し変えて、text
変数の「banana
」が3つ重複するようにしました。
String text = "apple banana orange apple banana orange banana";
String result = text.replace("banana", "peach");
System.out.println(result); // apple peach orange apple peach orange peach
実行すると、下記のように複数の箇所が置換されたことが確認できます。
apple peach orange apple peach orange peach
replaceAllで置換する
文字列からreplaceAllメソッドを呼び出すことでも置換することができます。
replaceAllメソッドを使うと、置換対象を正規表現で指定することが可能です。
例えば、下記のように使います。
String text = "hello, 123!! hello, 9871!! hello, 100!!";
String result = text.replaceAll("[0-9]+", "world");
System.out.println(result); // hello, world!! hello, world!! hello, world!!
最初にtext
変数に対して、数値を含んだ文字列を代入しました。
次の処理で、text
変数からreplaceAllメソッドを呼び出しています。
replaceAllメソッドの第1引数に「正規表現」を指定して、第2引数に「置換後の文字列」を指定します。
返り値として、置換後の文字列が返ってきます。
今回は「[0-9]+
」で、0から9が1回以上続く箇所を指しているので、文字列の数値を対象にしています。
全ての対象箇所が変換されて、結果をresult
変数で受けて、出力しています。
プログラムを実行すると、下記のように数値の箇所が全て「world
」に置換されました。
hello, world!! hello, world!! hello, world!!
replaceFirstメソッドで置換する
replaceFirstメソッドを使うことでも、文字列を置換することができます。
replaceFirstメソッドでは、複数の対象文字があったときに、最初に見つかった1個目しか置換しません。
例えば、下記のように使います。
String text = "apple banana apple banana apple";
String result = text.replaceFirst("banana", "peach");
System.out.println(result); // apple peach apple banana apple
最初にtext
変数に対して、重複する単語を入れた文字列を代入しました。
次の処理で、text
変数からreplaceFirstメソッドを呼んでいます。
replaceFirstメソッドの第1引数に渡すのは正規表現で、第2引数に渡すのは置換後の文字列です。
返り値として、置換後の文字列が返ってきます。
今回は「banana
」を「peach
」に置換します。
プログラムを実行すると、下記のように出力されました。
apple peach apple banana apple
最初に出現した「banana
」のみが対象になって、置換されたことが確認できました。
Javaで文字列を置換する方法まとめ
今回はJavaで文字列を置換する方法について書きました。
記事の内容をまとめると、下記のようになります。
メソッド | 説明 | 例 |
---|---|---|
replace | 第1引数に対象文字列、第2引数に置換文字列を指定して置換する。 置換後の文字列が返ってくる。全ての文字列が置換される。 |
text.replace(“banana”, “peach”) |
replaceAll | 第1引数に正規表現、第2引数に置換文字列を指定して置換する。 置換後の文字列が返ってくる。全ての文字列が置換される。 |
text.replaceAll(“[0-9]+”, “world”) |
replaceFirst | 第1引数に正規表現、第2引数に置換文字列を指定して置換する。 置換後の文字列が返ってくる。最初の1つ目のみが置換される。 |
text.replaceFirst(“banana”, “peach”) |
単純に置換したいだけのときはreplace
メソッドを使って、正規表現が使いたいときにはreplaceAll
メソッドで良さそうです。
最初の1つ目のみを対象にしたいときにはreplaceFirst
メソッドを使いましょう。
コメント