Search code examples
c#globalizationcultureinfoiso-3166regioninfo

Country name to ISO 3166-2 code


I know how to convert an ISO 3166-2 code to the full English name, e.g. "US" to "United States" by using RegionInfo.

However, how can I do the opposite, i.e. that takes "United States" and returns "US"?


Solution

  • //Get the cultureinfo
    RegionInfo rInfo = new RegionInfo("us");
    string s = rInfo.EnglishName;
    
    //Convert it back
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
     CultureInfo cInfo = cultures.FirstOrDefault(culture => new RegionInfo(culture.LCID).EnglishName == s);