2011-09-23 7 views
7

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

答えて

22

この場合、String.replaceAllを使用しないでください。これは正規表現で指定されています。つまり、さらにエスケープする必要があります。これは問題ないはず:バックスラッシュが原因Java文字列リテラルであることに倍増していることを

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

注 - ので、ここで関与実際文字列「は、単一のバックスラッシュ」と「二重のバックスラッシュ」です - ダブル、4人ではありません。

replaceは、単純な文字列で動作します。正規表現は関係ありません。

+7

くそーを!もう一度やったよ! –

+0

これは私のためにこの\\\\のような4つのスラッシュを追加します。 –

+0

@Jamesandresakis:あなたが何を間違えているのか分かりにくいです。私の推測では、デバッガの文字列を見ているところです。デバッガが文字列をエスケープしている可能性があります。 –

1

私はJNIへのパスを提供したいと思います。この方法でのみ読み込みます。

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

2

あなたはreplaceAll使用することができます

String escaped = original.replaceAll("\\\\", "\\\\\\\\"); 
+0

p_p私はJon SkeetがreplaceAllを使わないと言った理由を知ります...ああJava ... – yarbelk

関連する問題