【问题标题】:How to get the country code from CultureInfo?如何从 CultureInfo 获取国家代码?
【发布时间】:2013-12-02 14:12:52
【问题描述】:

我有以下几点:

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.

有没有办法在不拆分字符串的情况下得到它?

【问题讨论】:

  • 不是TwoLetterISOLanguageName吗?
  • 也许您不是在寻找culture,而是在寻找region?
  • @Alberto 那将是en。
  • @huMptyduMpty:虽然相关,但并非完全重复。另一个问题寻找一个人类可读的国家名称,这个问题是关于区域代码的。特别是,其他问题的所选解决方案在这里不适用。

标签: c# globalization


【解决方案1】:
var c = new CultureInfo("en-GB");
var r = new RegionInfo(c.LCID);
string name = r.Name;

您很可能需要使用r.TwoLetterISORegionName 属性。

string regionName = r.TwoLetterISORegionName;

【讨论】:

  • 注意:在将其 LCID 提供给 RegionInfo 之前,您应该检查 CultureInfo.IsNeutralCulture。 RegionInfos 不能从中性文化中创建(例如“en”)。
【解决方案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”

【讨论】:

  • 他想要“GB”——你给了他“英国”。这可能对他有帮助,但不是他所要求的......
  • @Chris, string countryAbbrivation = ri.TwoLetterISORegionName; 会这样做。也添加在答案中
【解决方案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 );

名称:美国

三个字母ISORegionName:美国

TwoLetterISORegionName: US

【讨论】:

    【解决方案4】:

    如果你只想使用当前线程的RegionInfo,你可以用这个单行获取国家代码:

    RegionInfo.CurrentRegion.TwoLetterISORegionName
    

    【讨论】:

      【解决方案5】:

      Following 也会接受 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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-09
        • 2016-06-11
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多