numberformatinfo中有多个货币符号



在编写一段代码时,我发现使用Numberformatinfo时,我必须同时为一个国家编写两个货币符号。

台湾现在使用TWD作为货币符号。所以他们把他们的货币写成NTD 23,900 起

但仅仅通过使用NumberformatInfo,我无法同时放置两个货币符号。

public NumberFormatInfo GetCurrencyFormat(string countryCode, string languageCode)
{var cultureInfo = GetCultureInfo(countryCode, languageCode);
var currencyFormat = GetCurrencyFormat(cultureInfo);
return currencyFormat;
}

在这里我可以更改符号,但只能更改为上面提到的其中一个,它可以放在金额之前或之后。

恐怕只有一种方法,如何做到这一点。您需要使用自定义格式化程序来实现自定义类型。

似乎不支持两种货币符号/快捷方式和/或四种预定义格式之一(请参阅:文档中的备注(

简单的版本可以是这样的。

using System;
using System.Globalization;
namespace TwoCurrencySymbols
{
internal sealed class Currency : IFormattable
{
private readonly IFormattable value;
public Currency(IFormattable myValue)
{
value = myValue;
}
public string ToString(string format, IFormatProvider formatProvider)
{
if (format == "C")
{
return ("EUR " + value.ToString(format, formatProvider));
}
return value.ToString(format, formatProvider);
}
}
internal static class Program
{
private static void Main()
{
Console.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0:C}", new Currency(1)));
}
}
}

该示例是为EURO货币(我的区域设置(构建的。在实际实现中,您需要确定是否应该更改格式,例如if ((format == "C") && IsTaiwan(formatProvider))

相关内容

  • 没有找到相关文章

最新更新