将货币 $232,680.00 转换为十进制

Convert currency $232,680.00 to decimal

2,680.00获取十进制值的最佳方法是什么?没有正则表达式是否可行。

这也行不通-

decimal.TryParse(Response.assess_market_value, NumberStyles.Currency, CultureInfo.InvariantCulture, out marketTotalValue);

您可以将 AllowCurrencySymbol, AllowDecimalPoint and AllowThousands styles and use a culture that has $ as a CurrencySymbol 组合成 en-US

var s = "2,680.00";
decimal d = decimal.Parse(s, NumberStyles.AllowCurrencySymbol |
                             NumberStyles.AllowDecimalPoint | 
                             NumberStyles.AllowThousands, 
                             CultureInfo.GetCultureInfo("en-US"));

或更简单地使用 NumberStyles.Currency 而不是包含这些样式。

decimal d = decimal.Parse(s, NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));

您的代码中的问题是 InvariantCulture 具有 ¤(即货币符号 (U+00A4))而不是 $ 作为 CurrencySymbol。如果您将 InvariantCulture 更改为 CultureInfo.GetCultureInfo("en-US"),您的代码也可以正常工作。

en-US 文化完全适合您的字符串,因为它有 . 作为小数点分隔符,, 作为千位分隔符。

约有:

decimal.Parse("2,680.00", NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"))