Как получить код страны из CultureInfo?

У меня есть следующее:

System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("en-GB");

var a = c.DisplayName;
var b = c.EnglishName;
var d = c.LCID;
var e = c.Name;
var f = c.NativeName;
var g = c.TextInfo;
var h = c.ThreeLetterISOLanguageName;
var i = c.ThreeLetterWindowsLanguageName;
var j = c.TwoLetterISOLanguageName;

Ничто из этого не дает мне код страны, например. GB.

Есть ли способ получить его без разделения строк?

Ответы

Ответ 1

var c = new CultureInfo("en-GB");
var r = new RegionInfo(c.LCID);
string name = r.Name;

Скорее всего, вам нужно использовать свойство r.TwoLetterISORegionName.

string regionName = r.TwoLetterISORegionName;

Ответ 2

System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("en-GB");
var ri = new RegionInfo(c.Name);
string countryName = ri.DisplayName;

Это даст вам:

"United Kingdom"

Для использования двух букв:

string countryAbbrivation = ri.TwoLetterISORegionName;

Это даст вам "GB"

Ответ 3

Вы можете попробовать RegionInfo Class. Одним из свойств является RegionInfo.TwoLetterISORegionName Property. Пример из MSDN:

RegionInfo myRI1 = new RegionInfo("US");
Console.WriteLine( "   Name:                         {0}", myRI1.Name );
Console.WriteLine( "   ThreeLetterISORegionName:     {0}", myRI1.ThreeLetterISORegionName );
Console.WriteLine( "   TwoLetterISORegionName:       {0}", myRI1.TwoLetterISORegionName );

Название: US

ThreeLetterISORegionName: США

TwoLetterISORegionName: US

Ответ 4

Далее будет также приниматься CultureInfo ( "en" );

var c = new CultureInfo("en-GB");
string countryAbbrivation;
if (!c.IsNeutralCulture) 
{
                    var region = new RegionInfo(ContentLanguage.PreferredCulture.LCID);
                    countryAbbrivation = region.TwoLetterISORegionName.ToLower();
}else{
                    countryAbbrivation = c.Name;
}