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返回一个字符串,你应该很高兴。