将字符串转换为货币和全球化问题

时间:2013-02-08 19:56:28

标签: c# string globalization

我有这个:

var pl = new CultureInfo("pl-PL");
decimal valsue = decimal.Parse("2,25 PLN", pl);

如果我不将“PLN”放入我的字符串中,它可以正常工作。但PLN在我的国家是货币,我认为它应该解析,所以也许我做错了什么?是否有任何选项可以将此解析为十进制,并在字符串中附加“PLN”?

1 个答案:

答案 0 :(得分:3)

如果您查看CultureInfo的{​​{3}}对象,这将产生一些关于它打算如何解析值的线索。特别是,“pl-PL”文化的NumberFormat.CurrencySymbol

换句话说,此表达式将成功解析:decimal.Parse("2,25 zł", pl);

如果您更喜欢使用PLN作为货币符号(从技术上讲,它是货币代码),则可以配置自定义NumberFormat,如下所示:

var pln = (NumberFormatInfo) pl.NumberFormat.Clone(); // Clone is needed to create a copy whose properties can be set.
pln.CurrencySymbol = "PLN";
decimal valsue = decimal.Parse("2,25 PLN", NumberStyles.Currency, pln);

但请注意Parse调用中NumberFormat的使用情况:默认情况下,decimal.Parse仅接受包含数字值的字符串,而不使用货币格式。