Search code examples
c#-4.0globalizationcultureinfocountry

How to get country name


I used the code below to get the list of culture type, is there a way on how to get just the country name?

Thank you

static void Main(string[] args)
{
    StringBuilder sb = new StringBuilder();
    foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
    {
        sb.Append(ci.DisplayName);
        sb.AppendLine();
    }
    Console.WriteLine(sb.ToString());
    Console.ReadLine();
}

Sample Output:

Spanish (Puerto Rico)

Spanish (United States)


Solution

  • Well, this regular expression seems to do the job in most cases:

    var regex = new System.Text.RegularExpressions.Regex(@"([\w+\s*\.*]+\))");
    foreach (var item in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
    {
        var match = regex.Match(item.DisplayName);
        string countryName = match.Value.Length == 0 ? "NA" : match.Value.Substring(0, match.Value.Length - 1);
        Console.WriteLine(countryName);
    }