1. ホーム
  2. java

[解決済み] String.replaceAll シングル・バックスラッシュをダブル・バックスラッシュに置き換える

2022-02-19 18:46:21

質問

を変換しようとしています。 String \something\String \\something\\ を使って replaceAll しかし、いろいろなエラーが出ます。これが解決策だと思いました。

theString.replaceAll("\\", "\\\\");

しかし、これは以下のような例外を発生させます。

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

解決方法は?

その String#replaceAll() として解釈します。 正規表現 . また \ はエスケープ文字で ともに Stringregex . 正規表現ではダブルエスケープする必要があります。

string.replaceAll("\\\\", "\\\\\\\\");

しかし、必ずしも正規表現が必要なわけではありません。なぜなら、一文字ずつ正確に置き換えたいのであって、ここではパターンを必要としないからです。つまり String#replace() で十分です。

string.replace("\\", "\\\\");


更新情報 : コメントにあるように、あなたは JavaScript のコンテキストで文字列を使用したいようですね。その場合は StringEscapeUtils#escapeEcmaScript() の代わりに、より多くの文字をカバーすることができます。