如何从 .NET 中的 CultureInfo 获取 ISO 3166 国家/地区代码



给定一个CultureInfo对象,如何获得两个字符ISO 3166国家代码? 例如,从en-US,我想要US,从en-GB,我想要GB。我还需要处理文化可能没有国家/地区代码的情况。

使用 RegionInfo-class 检索两个(或三个(字母的 iso 区域名称:

RegionInfo usa = new RegionInfo("en-US");           
string isoUSA = usa.TwoLetterISORegionName;
RegionInfo gb = new RegionInfo("en-GB");
string isoGB = gb.TwoLetterISORegionName;

您可能希望捕获在尝试将无效值传递给构造函数时可能发生的异常。

您可以使用

此软件包

此库提供对 ISO 标准的访问,包括 ISO 639(语言代码(、ISO 3166(国家/地区代码(和 ISO 4217(货币代码(。

例:

Country[] countries = Countries.Collection.Where(c => c.Name[0] == 'A').ToArray();
foreach (Country country in countries)
{
   Language[] langs = country.GetLanguages();
   Currency[] currencies = country.GetCurrencies();
   string langsColumn = string.Join(',', langs.Select(l => l.Name));
   string currenciesColumn = string.Join(',', currencies.Select(l=>l.Alpha3));
   Console.WriteLine($"{country.Alpha2};{country.Name};{currenciesColumn};{langsColumn}");
}

最新更新