2013-09-26 86 views
1

代替具體的數字我有以下字符串查找和正則表達式

string absoluteUri = "http://localhost/asdf1234?$asdf=1234&$skip=1234&skip=4321&$orderby=asdf" 

在此字符串我想用「$跳過= 1244」

我不得不更換「$跳過= 1234」嘗試以下正則表達式:

Regex.Replace(absoluteUri, @"$skip=\d+", "$skip=1244"); 

不幸的是,這是行不通的。我究竟做錯了什麼?

輸出應該是:

"http://localhost/asdf1234?$asdf=1234&$skip=1244&skip=4321&$orderby=asdf" 

回答

4

$是在正則表達式(這是一個錨)一個特殊字符。您需要在表達式和替換字符串中將其轉義,但它們的轉義方式不同。

在正則表達式,你有\逃脫,但在替代你加入另一個$逃避它:

Regex.Replace(absoluteUri, @"\$skip=\d+", "$$skip=1244"); 
+0

太好了,謝謝!用\逃脫了這個伎倆。我不確定爲什麼,但它可以在不轉義替換字符串的情況下工作。 – niklr

+0

可能是因爲'$ s'不是有效的替換字符串,它會忽略它。我建議在更換中使用'$$',即使在這種情況下不是絕對必要的。 –

0

我不能添加評論。 只是一點點的修復。需要做的:

absoluteUri = Regex.Replace(absoluteUri, @"\$skip=\d+", "$skip=1244");