2013-09-26 87 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");