Javaで文字列を置換する3つの方法!(replace)

Java Java

Javaで文字列を置換する方法について書いています。
文字列を置換するときには、文字列から下記のメソッドを呼び出します。

・replaceメソッド
・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メソッドを使いましょう。

コメント

タイトルとURLをコピーしました