如何处理在.NET中使用多种货币的国家/地区?

时间:2012-06-20 00:18:28

标签: c# asp.net .net-3.5 internationalization currency

我有一个应用程序,我想使用国家/地区的本机货币格式来格式化货币。问题是,某些国家/地区使用多种货币,但.NET仅为每个国家/地区分配一种货币。例如,罗马尼亚使用 EUR RON 。当我从.NET获得货币信息时:

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

输出为leu,即 RON 货币类型。

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

2 个答案:

答案 0 :(得分:1)

您可以使用自定义货币符号替换货币符号(在这种情况下为leu to euro)

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

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

答案 1 :(得分: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

,则必须调用此帮助程序