1
/// <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.

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

4

2 回答 2

3

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

相反,使用(String, String, MatchEvaluator)带有匿名方法的重载:

Regex.Replace(overlayHTML, pattern, 
match => FormatCurrency(GetItemPriceOnDate(DateTime.Now, currencyID, int.Parse(match.Groups[1].Value)))
)
于 2012-07-30T16:55:26.487 回答
-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 返回一个字符串,你应该很高兴。

于 2012-07-30T17:02:39.587 回答