8

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

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

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

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

4

2 回答 2

1

您可以将货币符号替换为自定义符号(在本例中为 leu 为欧元)

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

decimal money = 100;
Console.WriteLine(money.ToString("c", LocalFormat));
于 2012-06-20T00:31:14.780 回答
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

于 2012-06-20T01:39:31.783 回答