1

我有这个:

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

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

4

1 回答 1

3

如果你看一下你CultureInfoNumberFormat对象,这将产生一些关于它打算如何解析值的线索。特别是NumberFormat.CurrencySymbol对于“pl-PL”文化来说

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

如果您更喜欢使用 PLN 作为货币符号(从技术上讲,它是货币代码),则可以配置一个 custom 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);

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

于 2013-02-08T20:07:33.567 回答