2012-06-20 56 views
7

我有一个应用程序,我想使用国家的本地货币格式设置货币格式。问题是,某些国家使用多种货币,但.NET仅为每个国家分配一种货币。例如,罗马尼亚使用欧元罗恩。当我从.NET货币信息:如何处理在.NET中使用多种货币的国家?

var cultureInfo = new CultureInfo("ro-RO"); 
Console.WriteLine("cultureInfo.NumberFormat.CurrencySymbol); 

输出为leu,这是RON货币类型。

如何在.NET中获得欧元?我有3个字母的ISO货币代码(EUR)和国家语言(ro-RO),但我不知道如何使用此信息获取格式正确的欧元货币字符串。

+2

罗马尼亚是不使用欧元但国家之一。 .NET正确显示货币。不要混淆欧盟成员国与使用欧元货币的欧盟国家,这是不一样的。这些名单不是100%相等的,因为许多国家仍然不使用欧元(例如英国)。 – walther

+0

的确如此,但我们支持罗马尼亚和英国的欧元支付。虽然它们可能不是国家“标准化”的,但实际上它们是被使用的,因此我们必须支持它们。 –

+0

我猜如果它不是'标准化的',那么.net无法知道它。 (这是除非你明确地编码) –

回答

1

您可以用自定义更换货币符号(列伊对欧元在这种情况下)

NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); 
LocalFormat.CurrencySymbol = "€"; 

decimal money = 100; 
Console.WriteLine(money.ToString("c", LocalFormat)); 
0

我想我给你一个静态辅助类的回答像以下:

static class CurrencySymbolHelper 
{ 
    public static string GetCurrencySymbol(CultureInfo cultureInfo, bool getAlternate) 
    { 
     if (cultureInfo.Name == "ro-RO" && getAlternate) 
       return "EUR"; 

     return cultureInfo.NumberFormat.CurrencySymbol; 
    } 
} 

您可以将想要的变量传递给该方法,并在其中执行任何您希望的操作。拨打如下:

var cultureInfo = new CultureInfo("ro-RO"); 
Console.WriteLine(CurrencySymbolHelper.GetCurrencySymbol(cultureInfo,false)); 

的问题是,你必须调用这个助手当过你想要得到的信息货币,而不是cultureInfo.NumberFormat.CurrencySymbol