C#获取RegionInfo,TwoLetterISORegionName,瑞典国名
问题描述:
我需要为国家获取两个字母的ISO地区名称ISO 3166
-ISO 3166-1 alpha 2
。我的问题是我只有瑞典语的国家名称,例如Sverige
代表Sweden
和Tyskland
代表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;
答
与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的西班牙语版 版本。
适用于'Sverige'和'Danmark',但在例如'德国'的'Tyskland'上失败。 – Ogglas
“德国”(英文名称)应该是'Deutschland'(当地名称),“丹麦”时应该是'Danmark','希腊'则应该是'Ελλάδα'等。 –
是的,但保存的值I '德国'有'Tyskland'。 :) – Ogglas