18

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

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

3 回答 3

30

使用NumberStyles.Currency代替NumberStyles.AllowCurrencySymbol

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

并且您的代码的输出将是:

Decimal value: 12.00
于 2012-12-14T12:16:43.590 回答
0

试试这个;

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

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

于 2013-08-29T10:11:17.730 回答
0

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

Sharplab 证明:链接

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

于 2021-01-01T14:32:39.153 回答