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

///  /// Given HTML overlay for an image in the store, render it. /// [p:n] renders as price for item ID n ///  /// Rendered result public static string RenderHTMLOverlay(string overlayHTML, int currencyID) { const string pattern = "\\[p\\:(\\b\\d+\\b)\\]"; overlayHTML = Regex.Replace(overlayHTML, pattern, FormatCurrency(GetItemPriceOnDate(DateTime.Now, currencyID, int.Parse("$1")))); return overlayHTML; } 

这不起作用,因为$1不能正确地作为参数传递给int.Parse

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

有谁知道如何解决这个限制?

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

而是使用(String, String, MatchEvaluator)重载与匿名方法:

 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 

如果Store.CommonFunctions.GetItemPriceOnDate返回一个字符串,你应该很高兴。