我不知道为什么这不起作用:
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);
}
答案 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() 忽略除数字和减号以外的所有内容......但是如果你想要一般验证......那么你必须在某处硬编码这些比特币等符号