我有这个:
var pl = new CultureInfo("pl-PL");
decimal valsue = decimal.Parse("2,25 PLN", pl);
如果我不将“PLN”放入我的字符串中,它可以正常工作。但PLN在我的国家是货币,我认为它应该解析,所以也许我做错了什么?是否有任何选项可以将此解析为十进制,并在字符串中附加“PLN”?
答案 0 :(得分:3)
如果您查看CultureInfo
的{{3}}对象,这将产生一些关于它打算如何解析值的线索。特别是,“pl-PL”文化的NumberFormat.CurrencySymbol
为zł
。
换句话说,此表达式将成功解析: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
仅接受包含数字值的字符串,而不使用货币格式。