web-dev-qa-db-ja.com

javaで「\」を「\\」に置き換える方法

文字列を配列に分割して\\\で置き換えようとしましたが、できませんでした。また、この("\","\\");のようなString.replaceAllを試しました。 JNIへのパスを指定したいのですが、この方法でしか読み取れません。誰かが私を助けてくれますか?ありがとうございました。

12
David Prun

使用しない String.replaceAll この場合-正規表現で指定されているため、さらにエスケープする必要があります。これは問題ないはずです:

String escaped = original.replace("\\", "\\\\");

Java文字列リテラル内にあるため、バックスラッシュが2つあることに注意してください。したがって、ここに含まれるactual文字列は「単一バックスラッシュ」と「ダブルバックスラッシュ」-2重と4重ではありません。

replace は単純な文字列で機能します-正規表現は関係しません。

26
Jon Skeet

replaceAllを使用できます:

String escaped = original.replaceAll("\\\\", "\\\\\\\\");
2
Bibin Mathew

JNIへのパスを指定したいのですが、この方法でしか読み取れません。

そうではありません。プログラミング言語で宣言するリテラル文字列では、二重のバックスラッシュのみが必要です。実行時にこの置換を行う必要はありません。なぜこれを行うのかを再考する必要があります。

1
user207421