问题
I have the following:
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;
None of this gives me the country code, e.g. GB
.
Is there a way to get it without string splitting?
回答1:
var c = new CultureInfo("en-GB");
var r = new RegionInfo(c.LCID);
string name = r.Name;
Most probably you need to use r.TwoLetterISORegionName
property.
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;
That will give you:
"United Kingdom"
For Two Letter Use:
string countryAbbrivation = ri.TwoLetterISORegionName;
That will give you "GB"
回答3:
You can try the RegionInfo Class. One of the properties is the RegionInfo.TwoLetterISORegionName Property. Example from MSDN:
RegionInfo myRI1 = new RegionInfo("US");
Console.WriteLine( " Name: {0}", myRI1.Name );
Console.WriteLine( " ThreeLetterISORegionName: {0}", myRI1.ThreeLetterISORegionName );
Console.WriteLine( " TwoLetterISORegionName: {0}", myRI1.TwoLetterISORegionName );
Name: US
ThreeLetterISORegionName: USA
TwoLetterISORegionName: US
回答4:
If you just want to use the RegionInfo
of the current thread, you can get the country code with this one-liner:
RegionInfo.CurrentRegion.TwoLetterISORegionName
回答5:
Following will also accept 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;
}
来源:https://stackoverflow.com/questions/20330343/how-to-get-the-country-code-from-cultureinfo