Saltar al contenido

Lista de códigos de países – C#

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *