文字列を配列に分割してに置き換えようとしまし\
た\\
が、それができませんでした。また、String.replaceAllをこのように試しました("\","\\");
。
JNIへのパスを指定したいのですが、この方法でのみ読み取ります。
この場合は使用しないでくださいString.replaceAll
。これは正規表現で指定されているため、さらにエスケープする必要があります。これは問題ないはずです:
String escaped = original.replace("\\", "\\\\");
Java文字列リテラルに含まれているため、バックスラッシュが2倍になっていることに注意してください。したがって、ここに含まれる実際の文字列は「シングルバックスラッシュ」と「ダブルバックスラッシュ」であり、2倍と4倍ではありません。
replace
単純な文字列で機能します-正規表現は含まれません。
You could use replaceAll
:
String escaped = original.replaceAll("\\\\", "\\\\\\\\");
JNIへのパスを指定したいのですが、この方法でのみ読み取ります。
そうではありません。プログラミング言語で宣言するリテラル文字列には、二重の円記号のみが必要です。実行時にこの置換を行う必要はありません。なぜこれをしているのかを再考する必要があります。
「\」はJavaではエスケープ文字と見なされるため、これに対処するのはかなりの冒険になる可能性があります。文字列では常に「\」「」を使用する必要があります。ただし、「\」は正規表現でもエスケープ文字であるため、正規表現で「\」を使用したいときに楽しみが始まります。したがって、単一の「\」の場合、正規表現で「\\」を使用する必要があります。
これが私がこの情報を見つけたリンクです:https ://www.rgagnon.com/javadetails/java-0476.html
'\'を'\\'に変換する必要がありました。私たちが使用できる場所を見つけました:
filepathtext = filepathtext.replace("\\","\\\\");
そしてそれは動作します。以下に、私がどのように実装したかのイメージを示します。