国家/地区名称为ISO 3166-1 alpha 2代码

时间:2013-01-02 13:26:40

标签: .net country-codes iso-3166

我有一个像澳大利亚这样的国家名称,我希望在这种情况下获得像AU这样的ISO 3166-1 alpha 2代码。有没有办法在.NET中轻松完成这个?

3 个答案:

答案 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);

然后您可以轻松地从新词典中获取国家/地区代码。