c#正则表达式匹配和替换使用函数

c#正则表达式匹配和替换使用函数,c#,regex,C#,Regex,有人知道我如何克服这个限制吗?如果replacement参数是字符串,则只能使用$1表示法,因此您最终将$1作为文本字符串传递给int.Parse方法 相反,请将重载与匿名方法一起使用: Exception Details: System.FormatException: Input string was not in a correct format. 我不能完全确定我是否理解你,所以如果我不在,请容忍我 Regex.Replace(overlayHTML, pattern, match

有人知道我如何克服这个限制吗?

如果
replacement
参数是字符串,则只能使用
$1
表示法,因此您最终将
$1
作为文本字符串传递给
int.Parse
方法

相反,请将重载与匿名方法一起使用:

Exception Details: System.FormatException: Input string was not in a correct format.

我不能完全确定我是否理解你,所以如果我不在,请容忍我

Regex.Replace(overlayHTML, pattern, 
match => FormatCurrency(GetItemPriceOnDate(DateTime.Now, currencyID, int.Parse(match.Groups[1].Value)))
)

如果Store.CommonFunctions.GetItemPriceOnDate返回一个字符串,您就可以开始了

与问题无关,但我建议使用
@“\[p\:(\b\d+\b)\]”来代替
模式的表达式。意思相同,可读性更强。更好的是:
@“\[p:(\d+)\]”
。冒号不需要转义,单词边界是多余的。
Regex.Replace(overlayHTML, pattern, 
match => FormatCurrency(GetItemPriceOnDate(DateTime.Now, currencyID, int.Parse(match.Groups[1].Value)))
)
 Console.WriteLine(int.Parse("$1"));  //throws exception Input string was not in a correct format.

 Console.WriteLine(int.Parse("$1".Replace("$", "")));  //Result: 1