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でダブルクォーテーションを表すためにエスケープが必要であるため、エスケープするバックスラッシュ自体もエスケープする必要があり、結果として"\\\\"
という形になります。
これにより、期待通りの置換が行われます。
コメント