2

私がそのようなことをしている場合:

someString.Replace("abc","").Replace("def","").Replace(@"c:\Windows","")

どうすればそれを置き換えることができますか

Regex.Replace(someString," \\here I don't know what the pattern should be")

私はこれを試しました:

Regex.Replace(someString, @"(?:abc|def|c:\Windows)")

しかし、うまくいきませんでした

アップデート...

問題は、そのようなパスを通過するときです

Regex.Replace(someString, @"(?:abc|def|"+aPath+")")
4

2 に答える 2

6
`But it didnt work` doesn't say much helpfull!

これを試して:

someString = Regex.Replace(someString, @"(?:abc|def|ghi|c:\\Windows)", "")

やってみたところうまくいきました。コードが機能しない理由は、置換文字列を忘れてパス内のバックスラッシュをエスケープする必要があるためだと思います。

于 2012-07-18T20:04:45.357 に答える
3

「うまくいかなかった」のは C:\windows の置き換えだと思います。あなたが必要

someString = Regex.Replace(someString, @"(?:abc|def|C:\\windows)","");

問題は、バックスラッシュをエスケープする必要があることです。エスケープされていないバックスラッシュは、正規表現で意味を持ちます。特に、この場合、\W は実際には英数字以外の文字と一致します。

編集して任意の文字列をエスケープします。使用できますRegex.Escape(yourString);

于 2012-07-18T20:12:58.617 に答える