2011-03-11 99 views
5

我正在使用CultureInfo方法成功地将所有不同的货币格式化为正确的格式。显示值后的货币符号

但是在一些例外情况下,例如欧元和瑞典克朗的货币,我需要能够在价值之后添加它们。目前,我的CultureInfo正在以如下方式格式化它们:“SEK 1.00,00”,当它需要“1.00,00 SEK”时。

任何帮助表示赞赏。

回答

7

您只需要更改文化的NumberFormatInfo.CurrencyPositivePatternNumberFormatInfo.CurrencyNegativePattern属性。

只是克隆的原始文化:

CultureInfo swedish = new CultureInfo("sv-SE"); 
swedish = (CultureInfo)swedish.Clone(); 
swedish.NumberFormat.CurrencyPositivePattern = 3; 
swedish.NumberFormat.CurrencyNegativePattern = 3; 

然后

var value = 123.99M; 
var result = value.ToString("C", swedish); 

应该给你想要的结果。这应该让你:

123,99 KR

+0

是的作品!感谢Alex。只是为了让我明白你做了什么。我所需要的只是添加CurrencyPositivePattern和CurrencyNegativePattern方法来将货币符号移动到最后? – R100 2011-03-11 12:47:57

+1

@ R100:是的,但这些是'NumberFormatInfo'类的属性(不是方法)。 – Alex 2011-03-11 12:51:25

1

是大致CurrencyNegativePattern小心

此代码

CultureInfo swedish = new CultureInfo("sv-SE"); 
swedish = (CultureInfo)swedish.Clone(); 
swedish.NumberFormat.CurrencyPositivePattern = 3; 
swedish.NumberFormat.CurrencyNegativePattern = 3; 

会给你

134, 99 kr。

kr.134,99kr.-

更改CurrencyNegativePattern 8

swedish.NumberFormat.CurrencyNegativePattern = 8; 

会给你

134,99 KR。

-134,99 kr。

更多信息https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencynegativepattern(v=vs.110).aspx