我需要为国家/地区获取两个字母的 ISO 区域名称ISO 3166- ISO 3166-1 alpha 2。我的问题是我只有瑞典语的国家名称,例如SverigeforSweden和Tysklandfor 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;
Run Code Online (Sandbox Code Playgroud)
尝试比较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}");
Run Code Online (Sandbox Code Playgroud)
编辑:似乎我们实际上想RegionInfo通过其瑞典名称找出实例
Sverige -> Sweden
Tyskland -> Germany
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们应该使用DisplayName代替NativeName:
string swedishName = "Sverige"; // Sweden
var region = CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Select(ci => new RegionInfo(ci.LCID))
.FirstOrDefault(rg => rg.DisplayName == swedishName);
Run Code Online (Sandbox Code Playgroud)
我们应该确保我们使用本地化的.Net
DisplayName 属性以 .NET Framework本地化版本的语言显示国家/地区名称。例如,DisplayName 属性在 .NET Framework 的英文版上以英语显示国家/地区,在 .NET Framework 的西班牙语版上以西班牙语显示。
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |