我有一个像澳大利亚这样的国家名称,我希望在这种情况下获得像AU这样的ISO 3166-1 alpha 2代码。有没有办法在.NET中轻松完成这个?
答案 0 :(得分:3)
Country name to ISO 3166-2 code
中提出的类似问题 /// <summary>
/// English Name for country
/// </summary>
/// <param name="countryEnglishName"></param>
/// <returns>
/// Returns: RegionInfo object for successful find.
/// Returns: Null if object is not found.
/// </returns>
static RegionInfo getRegionInfo (string countryEnglishName)
{
//Note: This is computed every time. This may be optimized
var regionInfos = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Select(c => new RegionInfo(c.LCID))
.Distinct()
.ToList();
RegionInfo r = regionInfos.Find(
region => region.EnglishName.ToLower().Equals(countryEnglishName.ToLower()));
return r;
}
答案 1 :(得分:2)
内置任何内容都无法将国家/地区名称转换为其2 alpha ISO代码。
您可以创建一个字典以在两者之间进行映射。
var countryToISO2Map = new Dictionary<string,string>{
{"Australia", "AU"},
...
};
答案 2 :(得分:0)
您可以将国家/地区代码的JSON映射到http://country.io/names.json的名称。你只需要用以下内容来翻转它:
var countries = codes.ToDictionary(x => x.Value, x => x.Key);
然后您可以轻松地从新词典中获取国家/地区代码。