Posterior a de esta prolongada compilación de información hemos podido solucionar esta inconveniente que suelen tener ciertos de nuestros lectores. Te compartimos la solución y nuestro objetivo es servirte de gran apoyo.
Solución:
Cuando dice “código de país”, asumo que se refiere al código de dos letras como en ISO 3166. Luego puede usar el constructor RegionInfo para verificar si su string es un código correcto.
string countryCode = "de";
try
RegionInfo info = new RegionInfo(countryCode);
catch (ArgumentException argEx)
// The code was not a valid country code
También podría, como indica en su pregunta, verificar si es un código de país válido para el idioma alemán. Luego, solo pasa un nombre de cultura específico junto con el código de país.
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
La respuesta aceptada es un mal uso de la ArgumentException
lanzada por el constructor. Realmente no estás usando el RegionInfo
o el ArgumentException
instancias, lo que hace que el propósito del código no esté muy claro.
En su lugar, obtenga una lista de todas las culturas específicas, luego busque en las regiones de esas culturas para encontrar una coincidencia en su código ISO 3166 alfa-2:
bool IsCountryCodeValid(string countryCode)
return CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Select(culture => new RegionInfo(culture.LCID))
.Any(region => region.TwoLetterISORegionName == countryCode);
O específicamente, para su problema:
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);
Si solo necesita países/regiones, puede utilizar la clase RegionInfo: http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx