我将全球化应用于应用程序,我遇到以下问题:
我默认将en-US设置为文化,然后执行格式以向用户显示格式化的值。
string FormattedValue = string.Format("{0:C}", 5000.00); //That returns $5.000.00
然后我需要将该值转换为十进制,并且也可能有一个货币符号,但头痛的是双重"。"
var DecimalValue = decimal.parse(value,NumberStyles.AllowCurrencySymbol);
它抛出"输入字符串的格式不正确" 。而且我知道这是由双重"引起的。"因为当我将文化更改为例如en-AU时,在这种情况下格式化的值是$ 5,000.00并且decimal.parse完美地工作。有什么想法吗?
答案 0 :(得分:0)
此时我自己修修补补,我确信你的系统的文化设置出了问题。我使用的是.NET 4.5.1的Win 8.1 x64,并且:
CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => c.NumberFormat.CurrencyDecimalSeparator[0] == c.NumberFormat.CurrencyGroupSeparator[0])
.ToList()
.ForEach(c => Console.WriteLine(c.Name));
在我的系统上没有打印任何内容。
我相信您可以实现自己的IFormatProvider
实现,但我真的不认为这会解决您的问题。