C#获取RegionInfo,TwoLetterISORegionName,瑞典国名

问题描述:

我需要为国家获取两个字母的ISO地区名称ISO 3166-ISO 3166-1 alpha 2。我的问题是我只有瑞典语的国家名称,例如Sverige代表SwedenTyskland代表Germany。是否有可能只从这些信息获取RegionInfo?我知道英文国名是可以的。C#获取RegionInfo,TwoLetterISORegionName,瑞典国名

作品:

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://*.com/a/14262292/3850405

NativeName尝试比较:

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实例名字

Sverige -> Sweden 
    Tyskland -> Germany 
    ... 

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

string swedishName = "Sverige"; // Sweden 

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

,我们应该确保我们使用本地化

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

+0

适用于'Sverige'和'Danmark',但在例如'德国'的'Tyskland'上失败。 – Ogglas

+0

“德国”(英文名称)应该是'Deutschland'(当地名称),“丹麦”时应该是'Danmark','希腊'则应该是'Ελλάδα'等。 –

+0

是的,但保存的值I '德国'有'Tyskland'。 :) – Ogglas