首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# get RegionInfo,TwoLetterISORegionName,瑞典国名

C# get RegionInfo,TwoLetterISORegionName,瑞典国名
EN

Stack Overflow用户
提问于 2017-04-18 10:33:06
回答 1查看 1.3K关注 0票数 6

我需要得到两个字母的国际标准化组织区域名称,ISO 3166 - ISO 3166-1 alpha 2,为各国.我的问题是,我只有瑞典语的国家名称,例如Sverige代表SwedenTyskland代表Germany。是否有可能仅从这些信息中获取RegionInfo?我知道英国国名是有可能的。

作品:

代码语言:javascript
复制
var countryName = "Sweden";
//var countryName = "Denmark";
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID));
var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(countryName));
var twoLetterISORegionName = englishRegion.TwoLetterISORegionName;

https://stackoverflow.com/a/14262292/3850405

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-18 10:40:52

尝试与NativeName进行比较

代码语言:javascript
复制
string nativeName = "Sverige"; // Sweden

var region = CultureInfo
    .GetCultures(CultureTypes.SpecificCultures)
    .Select(ci => new RegionInfo(ci.LCID))
    .FirstOrDefault(rg => rg.NativeName == nativeName);

Console.Write($"{region.TwoLetterISORegionName}");

编辑:,似乎我们实际上想通过它的瑞典名称来查找RegionInfo实例

代码语言:javascript
复制
  Sverige  -> Sweden
  Tyskland -> Germany
  ...

在这种情况下,我们应该使用DisplayName而不是NativeName

代码语言:javascript
复制
string swedishName = "Sverige"; // Sweden

var region = CultureInfo
    .GetCultures(CultureTypes.SpecificCultures)
    .Select(ci => new RegionInfo(ci.LCID))
    .FirstOrDefault(rg => rg.DisplayName == swedishName);

我们应该确保我们使用的是本地化 .Net。

DisplayName属性以本地化版本 of .NET Framework的语言显示国家/区域名称。例如,DisplayName属性在.NET框架的英文版本上以英文显示国家/地区,在.NET框架的西班牙版本上以西班牙语显示。

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

https://stackoverflow.com/questions/43469770

复制
相关文章

相似问题

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