我需要得到两个字母的国际标准化组织区域名称,ISO 3166 - ISO 3166-1 alpha 2,为各国.我的问题是,我只有瑞典语的国家名称,例如Sverige代表Sweden,Tyskland代表Germany。是否有可能仅从这些信息中获取RegionInfo?我知道英国国名是有可能的。
作品:
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;发布于 2017-04-18 10:40:52
尝试与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);我们应该确保我们使用的是本地化 .Net。
DisplayName属性以本地化版本 of .NET Framework的语言显示国家/区域名称。例如,DisplayName属性在.NET框架的英文版本上以英文显示国家/地区,在.NET框架的西班牙版本上以西班牙语显示。
https://stackoverflow.com/questions/43469770
复制相似问题