You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过国家名称获取国家代码?C#代码返回null问题求助

解决通过国家名称获取RegionInfo返回null的问题

我明白你遇到的问题了——当你用"Tanzania"作为搜索关键词时,代码找不到对应的RegionInfo,返回了null。这主要有两个核心原因,咱们一步步来解决:

问题根源

  • RegionInfo.EnglishName的实际存储值不是短名:对于坦桑尼亚,RegionInfo的EnglishName实际是**"United Republic of Tanzania"**,虽然理论上包含"Tanzania",但string.Contains默认是区分大小写的,若搜索时的大小写与存储值不一致,就会匹配失败。
  • SpecificCultures可能遗漏部分地区:CultureInfo.GetCultures(CultureTypes.SpecificCultures)仅返回带有特定语言绑定的地区文化(比如斯瓦希里语-坦桑尼亚的sw-TZ),部分地区可能没有对应的特定文化,导致无法被检索到。

解决方案

方案1:使用不区分大小写的匹配逻辑

修改匹配条件,忽略大小写差异,确保关键词无论大小写都能匹配:

var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                        .Select(x => new RegionInfo(x.LCID));
var selectedRegion = regions.FirstOrDefault(region => 
    region.EnglishName.IndexOf(countryName, StringComparison.OrdinalIgnoreCase) >= 0);

方案2:改用更全面的地区数据源

如果SpecificCultures仍漏检地区,可以改用CultureTypes.AllCultures并过滤出地区相关文化,同时去重避免同一地区的多语言重复条目:

var allRegions = CultureInfo.GetCultures(CultureTypes.AllCultures)
                            .Where(c => !c.IsNeutralCulture)
                            .Select(c => new RegionInfo(c.LCID))
                            .DistinctBy(r => r.TwoLetterISORegionName);

var selectedRegion = allRegions.FirstOrDefault(region => 
    region.EnglishName.IndexOf(countryName, StringComparison.OrdinalIgnoreCase) >= 0);

方案3:维护名称映射表提升匹配可靠性

如果需要处理大量非官方短名,可以预先维护常见国家的名称映射表,直接匹配官方名称:

var countryNameMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
    {"Tanzania", "United Republic of Tanzania"},
    {"USA", "United States"},
    // 可根据需求添加更多映射
};

if (countryNameMap.TryGetValue(countryName, out var officialName))
{
    countryName = officialName;
}

var selectedRegion = regions.FirstOrDefault(region => 
    region.EnglishName.Equals(countryName, StringComparison.OrdinalIgnoreCase));

验证方法

你可以先输出所有RegionInfo的名称和代码,确认目标地区的条目存在:

foreach (var region in regions)
{
    Console.WriteLine($"{region.EnglishName} - {region.TwoLetterISORegionName}");
}

执行后你会看到坦桑尼亚的条目是United Republic of Tanzania - TZ,以此验证匹配逻辑的正确性。

内容的提问来源于stack exchange,提问作者coders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:47