国家代码列表 – C#

我有一个字符串,我需要validation它是否是国家代码。 文化是德国人。 有没有什么方法可以调用德国文化中的国家代码列表而不必自己输入所有274(?)代码?

谢谢,Teja。

当你说“国家代码”时,我认为你的意思是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 } 

接受的答案是滥用构造ArgumentException抛出的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); } 

如果您只需要国家/地区,则可以使用RegionInfo类: http : //msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx

使用RegionInfo检查有效的ISO代码时要小心。 如果您提供的代码有效且它是受支持的区域,它将返回一个区域,但它不会对所有有效的ISO 3166代码执行此操作。

请参阅此处以获得更全面的解释: https : //social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy

RegionInfo适用于欧洲,但有几个非洲国家未通过此方法validation(例如乌干达)。

http://cldr.unicode.org/ – 通用标准多语言数据库包括国家/地区列表和其他可本地化的数据。