首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >国名改为ISO 3166-2代码

国名改为ISO 3166-2代码
EN

Stack Overflow用户
提问于 2014-12-24 00:13:30
回答 4查看 7.2K关注 0票数 7

我知道如何将ISO 3166-2代码转换成英文全名。使用RegionInfo将"US“改为"United States”。

然而,我如何才能做相反的事情,即拿“美国”而回“美国”呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-24 00:30:45

代码语言:javascript
复制
//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);
票数 13
EN

Stack Overflow用户

发布于 2014-12-24 00:20:54

主要思想:取所有区域对象,并从中选择一个包含给定全名的区域对象。

代码语言:javascript
复制
var regionFullNames = CultureInfo
                      .GetCultures( CultureTypes.SpecificCultures )
                      .Select( x => new RegionInfo(x.LCID) )
                      ;
var twoLetterName = regionFullNames.FirstOrDefault(
                       region => region.EnglishName.Contains("United States")
                    );
票数 4
EN

Stack Overflow用户

发布于 2014-12-24 01:45:31

你可以这样做:

代码语言:javascript
复制
class CountryCodeMap
{
  private static Dictionary<string,string> map =
    CultureInfo
    .GetCultures(CultureTypes.AllCultures)
    .Where( ci => ci.ThreeLetterISOLanguageName != "ivl" )
    .Where( ci => !ci.IsNeutralCulture )
    .Select( ci => new RegionInfo(ci.LCID) )
    .Distinct()
    .ToDictionary( r => r.Name , r => r.EnglishName )
    ;

  public static string GetCountryName( string isoCountryCode )
  {
    string countryName ;
    bool found = map.TryGetValue( isoCountryCode, out countryName ) ;

    if ( !found ) throw new ArgumentOutOfRangeException("isoCountryCode") ;

    return countryName ;
  }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27629880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档