2009-08-24 12 views
10

Ich habe eine Zeichenfolge, die ich überprüfen muss, ob es sich um einen Ländercode handelt. Die Kultur ist deutsch. Gibt es irgendeine Methode, die ich anrufen kann, um eine Liste von Ländercodes in einer deutschen Kultur zu bekommen, ohne alle 274 (?) Codes selbst eingeben zu müssen?Liste der Ländercodes - C#

Danke, Teja.

Antwort

13

Wenn Sie sagen, „Ländercode“ Ich nehme an, Sie meinen den Code aus zwei Buchstaben wie in ISO 3166. Dann können Sie den RegionInfo-Konstruktor verwenden, um zu überprüfen, ob Ihre Zeichenfolge ein korrekter Code ist.

string countryCode = "de"; 
try { 
    RegionInfo info = new RegionInfo(countryCode); 
} 
catch (ArgumentException argEx) 
{ 
    // The code was not a valid country code 
} 

Sie könnten auch, wie Sie in Ihrer Frage angeben, ob es ein gültiger Ländercode für die Sprache Deutsch ist. Dann geben Sie einfach einen bestimmten Kulturnamen zusammen mit dem Ländercode ein.

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 
} 
+0

Es stellt sich heraus, dass die deutsche Krankenversicherung ein anderes System von Namensländern verwendet. Ländercodegrößen variierten von 1-3 Zeichen. Danke für die Hilfe! - Teja vor 0 Sek. –

+0

Wow..das ist wirklich merkwürdig. Wenn es nur drei Buchstaben wären, hätte ich gedacht, dass es ISO 3166-1 Alpha 3 ist, das drei Buchstaben für den Ländercode (DEU für Deutsch) verwendet. – Ostemar

+0

Das ist seltsam; ISO 3166 Ländercodes sind Großbuchstaben. – rds

0

http://cldr.unicode.org/ - gemeinsame Standard mehrsprachige Datenbank enthält Länderliste und andere lokalisierbaren Daten.

3

Die akzeptierte Antwort ist ein Missbrauch des ArgumentException vom Konstruktor geworfen. Sie verwenden nicht wirklich die oder die ArgumentException Instanzen, was den Zweck des Codes sehr unklar macht.

stattdessen eine Liste aller spezifischen Kulturen erhalten, dann durch die Regionen dieser Kulturen Suche nach einem Spiel auf dem ISO 3166 alpha-2-Code zu finden:

bool IsCountryCodeValid(string countryCode) 
{ 
    return CultureInfo 
     .GetCultures(CultureTypes.SpecificCultures) 
      .Select(culture => new RegionInfo(culture.LCID)) 
       .Any(region => region.TwoLetterISORegionName == countryCode); 
} 

Oder speziell für Ihr Problem:

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); 
} 
+0

Offensichtlich verwendet dies LINQ. – Kjata30

1

Vorsicht beim RegionInfo Verwendung für einen gültigen ISO-Code zu überprüfen. Es wird eine Region zurückgeben, wenn der von Ihnen gelieferte Code gültig UND eine unterstützte Region ist, aber dies wird nicht für alle gültigen ISO 3166 Codes gemacht.

Sehen Sie hier für eine vollständigere Erläuterung: https://social.msdn.microsoft.com/Forums/en-US/c9a8bc14-d571-4702-91a6-1b80da239009/question-of-regioninfo-and-region-cy

RegionInfo für Europa gut funktionieren, aber es gibt einige afrikanische Länder, die mit dieser Methode nicht validiert werden (zum Beispiel Uganda).

Verwandte Themen