sharp ponen etiquetas estandar documentar documentacion descargar crear como comentarios codigo clases c# internationalization country-codes

ponen - etiquetas de c#



Lista de códigos de país-C# (5)

Tengo una cadena que necesito verificar si es un código de país. La cultura es alemana ¿Hay algún método al que pueda llamar para obtener una lista de códigos de país en una cultura alemana sin tener que escribir todos los códigos 274 (?) Yo mismo?

Gracias, Teja.


Cuando dices "código de país", supongo que te refieres al código de dos letras como en ISO 3166 . Luego puede usar el constructor de RegionInfo para verificar si su cadena 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 dice en su pregunta, verificar si es un código de país válido para el idioma alemán. Luego, solo debe ingresar 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 }



http://cldr.unicode.org/ - la base de datos multilenguaje estándar común incluye la lista de países y otros datos localizables.


La respuesta aceptada es un uso indebido de la ArgumentException lanzada por el constructor. En realidad, no está utilizando las RegionInfo o ArgumentException , lo que hace que el propósito del código sea muy poco claro.

En su lugar, obtenga una lista de todas las culturas específicas, luego busque a través de las regiones de esas culturas para encontrar una coincidencia en su código ISO 3166 alpha-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); }


Tenga cuidado al usar RegionInfo para verificar si hay un código ISO válido. Devolverá una región si el código que proporciona es válido Y es una región admitida, pero no lo hará para todos los códigos ISO 3166 válidos.

Consulte aquí para obtener una explicación más completa: https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy

RegionInfo funcionará bien para Europa, pero hay varios países africanos que no están validados con este método (por ejemplo, Uganda).