如何从 3 位 ISO 国家代码中获取 3 digit/letter 货币代码

How to get 3 digit/letter currencyCode from 3 digit ISO countryCode

我有一个 ddl,其中包含代表国家/地区代码的值。例如。 BRA、THA、UKR、AUS 等 我需要从每个本地化设置中获取首选货币。

我已经尝试检查 RegionInfo class,答案很可能就在其中。这个link显示了我想要的https://www.iban.com/currency-codes

有没有什么方法可以在不使用 table 结构的情况下获取 3 位货币代码? 即从 pc 或浏览器本身。基本上,如果用户选择他们的国家作为美国,那么货币应该固定为美元。我可以用一些 sql 很容易地做到这一点。但我想在不影响数据库的情况下这样做。即通过 RegionInfo 或 CultureInfo.

我无法使用 new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID).ISOCurrencySymbol 从服务器中提取。

.NET 有 CultureInfo.NumberFormat.CurrencySymbol

RegionInfo us = new RegionInfo("en-US");
RegionInfo gb = new RegionInfo("en-GB");
RegionInfo fr = new RegionInfo("fr-FR");

Console.Out.WriteLine(us.CurrencySymbol); // $
Console.Out.WriteLine(gb.CurrencySymbol); // £
Console.Out.WriteLine(fr.CurrencySymbol); // €

Console.Out.WriteLine(us.ISOCurrencySymbol); // USD
Console.Out.WriteLine(gb.ISOCurrencySymbol); // GBP
Console.Out.WriteLine(fr.ISOCurrencySymbol); // EUR

完整的区域信息可用here

您需要能够访问某处的数据存储。

您的选择是:

  1. 数据库 - 您已经打折(可能是因为您不想维护数据集)

  2. 硬代码 - 再次要求您再次维护数据集。

  3. 使用外部数据源 - 例如 API,第三方可以在其中提供您需要的数据以响应 HTTP 请求。好处是他们还为您维护数据集(尽管不能保证它的更新频率)。

我建议你看看:

https://restcountries.eu/

它们提供了一系列 RESTful API 端点,您可以查询这些端点以检索货币代码。

如果这 3 个字母是 ISO 标准,则有一个解决方案,您可以应用此代码

var c = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
      .Select(t=> new RegionInfo(t.LCID))
      .Where(t=>t.ThreeLetterISORegionName  == "USA")
      .FirstOrDefault();