Название страны в соответствии со стандартом ISO 3166-1 alpha 2

У меня есть название страны, например, Австралия, и я хотел бы получить код ISO 3166-1 alpha 2, например, AU. Есть ли способ легко сделать это в.NET?

3 ответа

Решение

Нет ничего встроенного, чтобы преобразовать название страны в ее 2-альфа код ISO.

Вы можете создать словарь для сопоставления между ними.

var countryToISO2Map = new Dictionary<string,string>{
   {"Australia", "AU"},
   ...      
};

Аналогичный вопрос, заданный в названии страны для кода ISO 3166-2

    /// <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;
    }

Вы можете получить JSON-сопоставление кодов стран с именами по http://country.io/names.json. Вам просто нужно перевернуть это с чем-то вроде:

var countries = codes.ToDictionary(x => x.Value, x => x.Key);

И тогда вы можете легко получить код страны из нового словаря.

Другие вопросы по тегам