You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中通过ISO-4217数字货币码获取字母货币码的方法

在.NET中通过ISO-4217数字货币码获取字母码的解决方案

你问的这个问题很实用,刚好我之前也处理过类似需求。咱们分情况来看:

1. .NET 7及以上版本:有现成API可用

从.NET 7开始,微软在System.Globalization命名空间中引入了CurrencyInfo类,专门用来处理货币相关的信息,其中就包含了ISO-4217的数字码(NumberCode)和字母码(AlphaCode)的映射。

你可以这样实现:

using System.Globalization;
using System.Linq;

public string GetCurrencyAlphaCode(int numericCode)
{
    var currency = CurrencyInfo.GetCurrencies()
        .FirstOrDefault(c => c.NumberCode == numericCode);
    
    return currency?.AlphaCode ?? throw new ArgumentException("无效的ISO-4217数字货币码");
}

这个方法会遍历所有已知的货币信息,找到匹配数字码的条目,返回对应的三位字母码。如果找不到匹配的,就抛出参数异常。

2. .NET 6及更早版本:需要自定义实现

在旧版本的.NET中,没有直接提供通过数字码查询字母码的内置API,不过我们可以自己构建一个ISO-4217数字码与字母码的映射字典,这样查询效率会很高。

示例代码如下:

// 这里只列出部分常用货币,你可以根据需求补充完整的ISO-4217映射
private static readonly Dictionary<int, string> _currencyNumericToAlphaMap = new Dictionary<int, string>
{
    { 840, "USD" },
    { 978, "EUR" },
    { 156, "CNY" },
    { 826, "GBP" },
    { 392, "JPY" },
    // 更多货币映射可以参考ISO-4217标准文档补充
};

public string GetCurrencyAlphaCode(int numericCode)
{
    if (_currencyNumericToAlphaMap.TryGetValue(numericCode, out var alphaCode))
    {
        return alphaCode;
    }
    
    throw new ArgumentException("无效的ISO-4217数字货币码");
}

你可以从官方的ISO-4217标准中获取完整的数字与字母码映射表,把它们补充到字典里,这样就能快速查询了。

补充说明

如果你不想手动维护字典,在旧版本中也可以通过遍历RegionInfo来间接获取,但这种方式效率较低,而且有些货币可能没有对应的RegionInfo(比如一些小众货币),所以更推荐直接使用字典的方式。

内容的提问来源于stack exchange,提问作者user5178972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:15:41