给定一个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}");
}