C# 通过瑞典国家名称获取 RegionInfo、TwoLetterISORegionName

Ogg*_*las 6 c# globalization

我需要为国家/地区获取两个字母的 ISO 区域名称ISO 3166- ISO 3166-1 alpha 2。我的问题是我只有瑞典语的国家名称,例如SverigeforSwedenTysklandfor 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)

/sf/answers/998360471/

Dmi*_*nko 5

尝试比较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 的西班牙语版上以西班牙语显示。