我用正則表達式來檢查其正確性字符串(我想允許的字符A-Z
,a-z
,*
,space
,-
,&
,%
,.
,/
,+
)。我的代碼是這樣的:如何在這種情況下使用Regex.Replace?
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "ABCDEFGH 12345 $%... A"; //string ok
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
這是工作,一切都很好。現在我只是想,也許我也可以處理不正確的字符串。我想用-
替換字符串中的不正確(非正則表達式有效)字符。這可以用Regex.Replace
完成。所以我做了這個:
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "HELLO WÖRLD ß~# 50.00$"; //Ö,ß,~,# should be replaced by -
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
else
myString = Regex.Replace(myString, r.ToString(), "-");
System.Console.WriteLine(myString);
那麼這是如此的不工作!作爲輸出,我得到:
HELLO WÖRLD ß~# 50.00$
我錯過了什麼?問題是正則表達式的權利?我可以檢查一個字符串是否正確,但是我不能正確使用這個正則表達式的Regex.Replace函數。有沒有辦法使用1個正則表達式來檢查字符串是否有效並使用Regex.Replace
?
啊好吧。也許我不完全理解你的正則表達式和我的正則表達式之間的區別......但是這個正在工作。在這之後我唯一需要改變的是如果我的語句是'(!r.IsMatch(myString))',那麼一切都很好。謝謝! – sabisabi 2013-03-11 07:20:46