/// <summary>
/// Given HTML overlay for an image in the store, render it.
/// [p:n] renders as price for item ID n
/// </summary>
/// <returns>Rendered result</returns>
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.
有谁知道如何解决这个限制?
答案 0 :(得分:3)
如果$1
参数是字符串,则只能使用replacement
表示法,因此您最终将$1
作为文字字符串传递给int.Parse
方法。< / p>
相反,请使用匿名方法(String, String, MatchEvaluator)
重载:
Regex.Replace(overlayHTML, pattern,
match => FormatCurrency(GetItemPriceOnDate(DateTime.Now, currencyID, int.Parse(match.Groups[1].Value)))
)
答案 1 :(得分:-1)
我不完全确定我理解你,如果我离开,请耐心等待。
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返回一个字符串,你应该好好去。