2

こんにちは、のような文字列があります"ami\\303\\261o"。に置き換え\\たい\

私たちは以下を試しました:

  1. replace("\\", "\")
  2. replaceAll("\\", "\")

しかし、適切な出力が得られませんでした。

4

5 に答える 5

3

Java 正規表現で使用するには、バックスラッシュを 2 回エスケープする必要があります。

resultString = subjectString.replaceAll("\\\\\\\\", "\\\\");
  1. 正規表現では、 \\「文字通りのバックスラッシュ」を意味します。
  2. Java 文字列で"\\"は、単一のバックスラッシュをエンコードします。
  3. したがって、単一のバックスラッシュに一致する正規表現を記述する Java 文字列は次のようになります。"\\\\"
  4. また、2 つのバックスラッシュを一致させたい場合は、それ"\\\\\\\\"に応じて です。
于 2013-03-13T11:44:09.637 に答える
3

バックスラッシュのエスケープを念頭に置いておく必要があります。使用する

public class so {
    public static void main(String[] args) {
        String s = "ami\\\\303\\\\261o";
        System.out.println(s);
        s = s.replace("\\\\", "\\");
        System.out.println(s);
    }
};

各バックスラッシュは、次のバックスラッシュをエスケープし、2 つのリテラル文字列\\\

またString.replace、変更された文字列を返し、元の文字列をそのまま保持することに注意してください。

于 2013-03-13T11:44:33.690 に答える
3

ここでは正規表現は必要ありません。スラッシュをエスケープして replace() を使用します

someString.replace('\\\\', '\\');
于 2013-03-13T11:50:55.503 に答える
0

これは、入力文字列の内部がJava Escape Character\\のために内部的に置き換えられる\ためです。 つまり、正規表現を実行せずに文字列を出力すると、次のようになります。
"ami\303\261o"

一般に、すべてのエスケープ文字をそれ自体でエスケープ することを忘れないでください。

\ -> escaped = \\  
\\ -> escaped = \\\\  
\\\ -> escaped = \\\\\\  
...and so on  
于 2013-03-13T11:52:21.157 に答える
0

以下のコードを試してください

 String val = "ami\\303\\261o"; 
    val =val.replaceAll("\\\\", "\\\\");        
    System.out.println(val);

出力は

あみ\303\261o

ここで Fiddle が作成されます。確認してください。

Java の実行例

于 2013-03-13T11:53:57.327 に答える