Название страны в соответствии со стандартом 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);
И тогда вы можете легко получить код страны из нового словаря.