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

时间:2012-12-14 12:12:14

标签: c# .net string type-conversion globalization

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

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);
}

3 个答案:

答案 0 :(得分:28)

使用NumberStyles.Currency代替NumberStyles.AllowCurrencySymbol

if (decimal.TryParse(s, NumberStyles.Currency, germanCulture, out d))

,您的代码输出为:

Decimal value: 12.00

答案 1 :(得分:0)

试试这个;

 string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);

它会将123423.083234转换为$ 1,23,423格式。

答案 2 :(得分:0)

请注意,不幸的是,这不适用于比特币符号和其他加密货币符号。两种方法我都试过了。

Sharplab 证明:link

在我的情况下的解决方法(我有一个减号,后跟比特币 ฿ 符号)是这样做的 字符串上的 .Where() 忽略除数字和减号以外的所有内容......但是如果你想要一般验证......那么你必须在某处硬编码这些比特币等符号