国家代码列表 - C#

18

我有一个字符串,需要验证它是否是一个国家代码。文化背景是德国。有没有一种方法可以调用以获取在德国文化背景下的国家代码列表,而无需自己手动输入所有274个代码?

谢谢, Teja。

6个回答

18

当您说“国家代码”时,我假设您指的是ISO 3166中的两个字母编码。然后,您可以使用RegionInfo构造函数来检查您的字符串是否为正确的代码。

string countryCode = "de";
try {
    RegionInfo info = new RegionInfo(countryCode);
}
catch (ArgumentException argEx)
{
    // The code was not a valid country code
}

正如您在问题中所述,您也可以检查它是否是德语的有效国家代码。然后,您只需将特定的区域设置名称与国家/地区代码一起传递即可。

string language = "de";
string countryCode = "de";
try {
    RegionInfo info = new RegionInfo(string.Format("{0}-{1}", language, countryCode));
}
catch (ArgumentException argEx)
{
    // The code was not a valid country code for the specified language
}

结果发现德国医疗保险使用不同的国家命名系统。 国家代码大小因字符而异。 谢谢你的帮助! - Teja 0秒前 - Tejaswi Yerukalapudi
哇..这真的很奇怪。如果只有三个字母,我会猜测它是使用三个字母的ISO 3166-1 Alpha 3国家代码(DEU代表德国)。 - Ostemar
3
RegionInfo与ISO 3166不完全相符。这个列表有一些例外,例如塞浦路斯(CY)在ISO 3166名单上,但未被RegionInfo所承认。 - Edwin van Vliet

17

接受的答案误用了构造函数抛出的ArgumentException。您实际上没有使用RegionInfoArgumentException实例,这使得代码的目的非常不清晰。

相反地,获取所有特定文化的列表,然后通过这些文化的区域搜索以找到与您的ISO 3166 alpha-2代码匹配的内容:

bool IsCountryCodeValid(string countryCode)
{
    return CultureInfo
        .GetCultures(CultureTypes.SpecificCultures)
            .Select(culture => new RegionInfo(culture.LCID))
                .Any(region => region.TwoLetterISORegionName == countryCode);
}

或者更具体地说,针对您的问题:

bool IsValidGermanCountryCode(string countryCode)
{
    return CultureInfo
        .GetCultures(CultureTypes.SpecificCultures)
            .Where(culture => culture.TwoLetterISOLanguageName == "de")
                .Select(culture => new RegionInfo(culture.LCID))
                    .Any(region => region.TwoLetterISORegionName == countryCode);
}

显然这里使用了LINQ。 - Kjata30

4

1

1

1
你可以使用我的NuGet包Nager.Country。每个国家都有很多额外的信息可用。有关更多信息,请访问Github项目
PM> install-package Nager.Country

var countryCode = "de";
ICountryProvider countryProvider = new CountryProvider();
var countryInfo = countryProvider.GetCountry(countryCode);
if (countryInfo != null)
{
    //country exists
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接