如何使用货币符号将字符串解析为十进制?

Tim*_*ter 17 .net c# string globalization type-conversion

我不知道为什么这不起作用:

string s = "12,00 €";
var germanCulture = CultureInfo.CreateSpecificCulture("de-DE");
decimal d;
if (decimal.TryParse(s, NumberStyles.AllowCurrencySymbol, germanCulture, out d))
{
    // i want to get to this point
    Console.WriteLine("Decimal value: {0}", d);
}
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 28

NumberStyles.Currency而不是NumberStyles.AllowCurrencySymbol

if (decimal.TryParse(s, NumberStyles.Currency, germanCulture, out d))
Run Code Online (Sandbox Code Playgroud)

并且您的代码输出将是:

Decimal value: 12.00
Run Code Online (Sandbox Code Playgroud)

  • 更多信息可以解释为什么会这样:NumberStyles.AllowCurrencySymbol只允许在解析过程中忽略货币符号.额外的空格和小数分隔符需要额外的标志才能启用它们:AllowDecimalPoint和AllowTrailingWhite.货币结合了这些标志(以及其他一些标志)[链接](http://msdn.microsoft.com/en-us/library/0xh24xh4.aspx) (7认同)