Tej*_*udi 11 c# country-codes internationalization
我有一个字符串,我需要验证它是否是国家代码.文化是德国人.我是否可以通过任何方法调用德国文化中的国家/地区代码列表,而无需自行键入所有274(?)代码?
谢谢,Teja.
Ost*_*mar 14
当您说"国家代码"时,我认为您的意思是ISO 3166中的双字母代码.然后,您可以使用RegionInfo构造函数来检查您的字符串是否是正确的代码.
string countryCode = "de";
try {
RegionInfo info = new RegionInfo(countryCode);
}
catch (ArgumentException argEx)
{
// The code was not a valid country code
}
Run Code Online (Sandbox Code Playgroud)
您也可以在问题中说明它是否是德语有效的国家/地区代码.然后,您只需将特定的文化名称与国家/地区代码一起传递.
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
}
Run Code Online (Sandbox Code Playgroud)
可接受的答案是滥用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);
}
Run Code Online (Sandbox Code Playgroud)
或专门针对您的问题:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19426 次 |
| 最近记录: |