1

以下のように正規表現の置き換えを使用しています:

string test = "[abc] Sends the employee mail. [twist] Sends the employee mail.";
test = Regex.Replace(test, "[twist]", "hello");

結果は次のようになります。

test = "[abc] Sendhello hellohe employee mahellol. [hellohellohellohellohello] Sendhello hellohe employee mahellol."

[twist] 文字列を hello に置き換えるだけです。

ここで何がうまくいかないのですか。

4

3 に答える 3

3

ブラケット (少なくとも最初のブラケット) をエスケープする必要があります。変化する

"[twist]"

"\\[twist\\]"

または、double を回避するためにそのままのリテラル\を使用して、

@"\[twist\]"

[twist]t、w、i、s、または t 文字のいずれかとして解釈され、それらのいずれかがhello文字列に置き換えられます。

于 2013-08-09T08:49:25.637 に答える
0

[追加の有用な情報として、 asをエスケープできる[[]ので、

"[[]twist]"

またはあなたができる

"\\x5btwist]"

\x5bのASCIIコードはどこにありますか[。そうでない場合は\ofをエスケープする必要があることに注意してください(C# は文字列の置換を行います)。代わりにエスケープすることで、 を「受け取り」、と見なすのは Regex です。明らかに、を使用してエスケープ シーケンスの展開を無効にすることができます。\x5b"\x5b" == "["\x5b[@

@"\x5btwist]"
于 2013-08-09T09:15:04.783 に答える
0

Regex.Replace(test,"\[ツイスト\]","こんにちは")

于 2013-08-09T08:58:43.140 に答える