1

我有一个像澳大利亚这样的国家/地区名称,在这种情况下我想获得像 AU 这样的 ISO 3166-1 alpha 2 代码。有没有办法在.NET 中轻松做到这一点?

4

3 回答 3

4

在国家名称与 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;
    }
于 2014-12-24T01:37:36.950 回答
2

没有内置任何东西可以将国家名称转换为其 2 alpha ISO 代码。

您可以创建一个字典以在两者之间进行映射。

var countryToISO2Map = new Dictionary<string,string>{
   {"Australia", "AU"},
   ...      
};
于 2013-01-02T13:29:26.287 回答
0

您可以从http://country.io/names.json获取国家代码到名称的 JSON 映射。你只需要用类似的东西来翻转它:

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

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

于 2014-09-05T01:59:56.700 回答