Javaでダブルクォーテーションを置換(replace)する方法

※当サイトではアフィリエイト広告を利用しています

Javaでダブルクォーテーションを置換する処理を書いたのでメモしておきます。

文字列「ab"cd"」「ab\"cd\"」に置換する場合、具体的には文字列内のダブルクォーテーション"をエスケープされた形式\"に置換する必要があります。

ただし、Javaの文字列リテラルを記述する際には、ダブルクォーテーション(")を使用し、文字列内でダブルクォーテーションを表現するにはエスケープシーケンス(\")を用います。

また、Javaの文字列でバックスラッシュ(\)自体を表現するには、それをエスケープして\\と書く必要があります。

したがって、指定された変換を行うには、以下のようなJavaコードを書きます。

この例では、replaceメソッドを使用していますが、実際には文字列内のすべてのダブルクォーテーションをエスケープする必要があるため、replaceメソッドではなくreplaceAllメソッドを使用して正規表現による置換を行います。

public class StringReplace {
    public static void main(String[] args) {
        // 初期文字列
        String a = "ab\"cd\"";

        // ダブルクォーテーションをエスケープされた形に置換
        a = a.replaceAll("\"", "\\\\\"");

        // 結果の出力
        System.out.println(a); // 出力: ab\"cd\"
    }
}

このコードでは、replaceAllメソッドの第一引数には文字列内で置換対象となるダブルクォーテーションを指定しており、第二引数でそれをエスケープされたダブルクォーテーションに置換しています。

"\""はJavaでダブルクォーテーションを表すためにエスケープが必要であるため、エスケープするバックスラッシュ自体もエスケープする必要があり、結果として"\\\\"という形になります。

これにより、期待通りの置換が行われます。

コメント