Java で文字列内の複数の文字を置換する

Rupam Yadav 2023年10月12日
  1. Java で replaceAll() を用いて文字列中の複数の文字を置換する
  2. String.replace() を用いた文字列の複数文字の置換
Java で文字列内の複数の文字を置換する

String.replaceAll()String.replace() は、Java で文字列中の文字を置換するのに便利な 2つのメソッドです。この記事では、これら 2つのメソッドを使って文字列内の複数の文字を置換する方法を見ていきます。

replaceAll() は正規表現を使って単独で行うことができますが、正規表現を使いたくない場合は replace() メソッドを使用することができます。

Java で replaceAll() を用いて文字列中の複数の文字を置換する

replaceAll() は、指定した文字をすべて置換したい場合に使用します。正規表現を使って置換したい文字を指定することができます。このメソッドは 2つの引数を取り、1つ目は正規表現のパターンで、2つ目は配置したい文字です。

次の例では、いくつかの一般的な正規表現を使用して複数の文字を置換します。

public class ReplaceAllChars {
  public static void main(String[] args) {
    String stringUnderscoresForward = "j_u_s_t_a_s/t/r/i/n/g";
    String stringWithDigits = "abcd12345efgh";
    String stringWithWhiteSpaces = "s t r i n g";
    String stringWithLowerCase = "This is a Lower Case String";

    String finalString1 = stringUnderscoresForward.replaceAll("[_/]", "-");
    String finalString2 = stringWithDigits.replaceAll("[\\d]", "");
    String finalString3 = stringWithWhiteSpaces.replaceAll("[ ]", "");
    String finalString4 = stringWithWhiteSpaces.replaceAll("[\\s]", "-");
    String finalString5 = stringWithLowerCase.replaceAll("[\\p{Lower}]", "");

    System.out.println("Old String: " + stringUnderscoresForward + " New String: " + finalString1);
    System.out.println("Old String: " + stringWithDigits + " New String: " + finalString2);
    System.out.println("Old String: " + stringWithWhiteSpaces + " New String: " + finalString3);
    System.out.println("Old String: " + stringWithLowerCase + " New String: " + finalString4);
    System.out.println("Old String: " + stringWithLowerCase + " New String: " + finalString5);
  }
}

出力:

Old String: j_u_s_t_a_s/t/r/i/n/g --New String: j-u-s-t-a-s-t-r-i-n-g
Old String: abcd12345efgh --New String: abcdefgh
Old String: s t r i n g --New String: string
Old String: This is a Lower Case String --New String: s-t-r-i-n-g
Old String: This is a Lower Case String --New String: T   L C S

上記の例では、一般的によく使われる複数の正規表現を使用しています。それらがどのような意味を持ち、どのように動作するかを見てみましょう。

stringUnderscoresForward はアンダースコアとフォワードスラッシュで区切られたすべての文字を持っているので、それらをすべてダッシュ( - )で置き換えます。[char1 char2] は、2つの文字を 1つの文字に置き換えるために使われる正規表現です。アンダースコアとスラッシュをすべてダッシュに置き換えるには [_/] を使用することができます。

stringWithDigits は、ランダムなアルファベットとその間の数字を含む文字列です。すべての桁を空文字に置き換えたい。そのためには、桁をエスケープする \d エスケープシーケンスを使用することができます。[\\d] が正規表現として使用され、置換文字は空文字になります。

stringWithWhiteSpaces には、すべての文字の間に空白が含まれています。空白を取り除くには、空文字に置き換えることができます。空のカッコの中に空白 [ ] を入れると、文字列の中に空白が含まれていることを示します。

また、文字列中の空白文字を取得するために [\\s] を使用することもできます。

stringWithLowerCase は小文字と大文字の両方を持っています。小文字は全て空文字に置き換えたい。全ての小文字を空文字に置き換えるには、正規表現である [\\p{Lower}] を使用することにします。

String.replace() を用いた文字列の複数文字の置換

public class ReplaceAllChars {
  public static void main(String[] args) {
    String stringWithRandomChars = "javbjavcjadakavajavc";

    String finalString =
        stringWithRandomChars.replace("b", "a").replace("c", "a").replace("d", "v").replace(
            "k", "j");

    System.out.println(finalString);
  }
}

出力:

javajavajavajavajava
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String