0

C# を使用して a を置き換えたい。Regex.Replace 関数を次のように使用してこれを実現できませんでした

Regex.Replace(html, "\\"", "\"");

このコマンドを再度実行すると、元の出力が生成されます

誰もがすでにこのような問題に直面しています。どんな助けでも大歓迎です。

よろしく、ガネーサン

4

1 に答える 1

-1

まず、"\\""1つの円記号をエスケープしているだけで、引用符はエスケープしていないため、コンパイラエラーが発生します。

ここでは2つのエスケープメカニズムを使用しています。1つはc#コンパイラからのもので、もう1つは正規表現インタープリターからのものです。

つまり:

このC#文字列を正規表現として指定する"\\\""と、コンパイル後にそのような文字列が作成され、エスケープ文字として\"も使用される正規表現エンジンによって解釈されます。\そのため、正規表現はエスケープされる"ため、コードは次のように置き換え"られます。"

したがって、現在を使用している場合"\\\\\""、最初にc#コンパイラがそれを作成\\"し、次に正規表現エンジンがそれを作成\"します(どちらも\エスケープ文字として使用しています)

現在、c#には、このような文字列を書きやすくするためのちょっとした機能があります。

@文字列の前にanを追加する\と、エスケープ文字ではなくなりますが、でエスケープする必要があり"ます""

つまり、"\\\""==@"\""""\\\\\""==@"\\"""

だからあなたはRegex.Replace(html,@"\\""","\"") それから読みやすいものを書くことができますRegex.Replace(html,"\\\\\","\"")

今回は正解したと思います:D

于 2013-03-01T12:30:13.977 に答える