我有一个字符串,我需要验证它是否是国家/地区代码。文化是德国人。我是否可以通过任何方法调用德国文化中的国家代码列表,而无需自己输入所有274(?)代码?
谢谢, 的Teja。
答案 0 :(得分:14)
当您说“国家/地区代码”时,我假设您的意思是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
}
答案 1 :(得分:4)
接受的答案是滥用构造函数抛出的ArgumentException
。您实际上并未使用RegionInfo
或ArgumentException
个实例,这使得代码的目的非常不明确。
相反,获取所有特定文化的列表,然后搜索这些文化的区域以找到您的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);
}
答案 2 :(得分:3)
如果您只需要国家/地区,则可以使用RegionInfo类: http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx
答案 3 :(得分:1)
使用RegionInfo
检查有效的ISO代码时要小心。如果您提供的代码有效并且它是受支持的区域,它将返回一个区域,但它不会对所有有效的ISO 3166代码执行此操作。
请点击此处查看更全面的解释:https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy
RegionInfo
适用于欧洲,但有几个非洲国家未通过此方法验证(例如乌干达)。
答案 4 :(得分:1)
您可以使用我的 nuget 包 Nager.Country
。每个国家/地区都有很多其他信息可用。如需更多信息,请访问 Github project
PM> install-package Nager.Country
var countryCode = "de";
ICountryProvider countryProvider = new CountryProvider();
var countryInfo = countryProvider.GetCountry(countryCode);
if (countryInfo != null)
{
//country exists
}
答案 5 :(得分:0)
http://cldr.unicode.org/ - 通用标准多语言数据库包括国家/地区列表和其他可本地化的数据。