文字列を配列に分割して\
を\\
で置き換えようとしましたが、できませんでした。また、この("\","\\");
のようなString.replaceAllを試しました。 JNIへのパスを指定したいのですが、この方法でしか読み取れません。誰かが私を助けてくれますか?ありがとうございました。
使用しない String.replaceAll
この場合-正規表現で指定されているため、さらにエスケープする必要があります。これは問題ないはずです:
String escaped = original.replace("\\", "\\\\");
Java文字列リテラル内にあるため、バックスラッシュが2つあることに注意してください。したがって、ここに含まれるactual文字列は「単一バックスラッシュ」と「ダブルバックスラッシュ」-2重と4重ではありません。
replace
は単純な文字列で機能します-正規表現は関係しません。
replaceAll
を使用できます:
String escaped = original.replaceAll("\\\\", "\\\\\\\\");
JNIへのパスを指定したいのですが、この方法でしか読み取れません。
そうではありません。プログラミング言語で宣言するリテラル文字列では、二重のバックスラッシュのみが必要です。実行時にこの置換を行う必要はありません。なぜこれを行うのかを再考する必要があります。