Laden...

Regex für country isocode? de-de

Erstellt von #coder# vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.298 Views
#coder# Themenstarter:in
395 Beiträge seit 2008
vor 12 Jahren
Regex für country isocode? de-de

Kennt jemand den Regex für ein Country Code => de-de, en-gb ?

Es sollte neben dem - Zeichen auch ein _ Zeichen möglich sein.

de_de, en_gb

Hat jemand ein Vorschlag?

916 Beiträge seit 2008
vor 12 Jahren

Hi #coder#,

für was brauchst du das? Ich denke das ist nicht der richtige Weg auch ohne die genaue Aufgabenstellung zu kennen!

Again what learned...

#coder# Themenstarter:in
395 Beiträge seit 2008
vor 12 Jahren

Ich habe ein REST Webservice, dieser bekommt vom Client diesen ISO Code. Nun soll vorher geprüft werden, ob dieser den angegebenen Voraussetzungen erfüllt, also eine Validierung. Wenn der String den Regex entspricht, werden Daten in der Sprache geladen, anonsten soll eine Invalid Format Response gesendet werden.

de-de oder de_DE
en-gb oder en_GB
..

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo #coder#,

das Forum ist kein Patterngenerator. Was hast du schon probiert? Wo genau hängst du? Das ist ja ein ziemlich einfacher Pattern. Siehe auch [Artikel] Regex-Tutorial. Da steht auch, wie das mit den Zeichenklassen geht (wenn an einer Stelle mehrere Zeichen möglich sein sollen). Wegen der Groß-Klein-Schreibung sieh dir auch die RegexOptions an.

herbivore

16.842 Beiträge seit 2008
vor 12 Jahren

Hallo,

auf ISO 3166-1 sieht man die gültigen ISO-Einträge.
Sehe aber Regex hier ein wenig falsch am Platz. Kannst ja auch nen Enum drauß machen - sind ja keine unendlichen Werte.
Aber ansonsten hat herbivore hier recht: das Forum ist kein Patterngenerator.

Zudem müsste Dein Pattern ja noch intelligenter sein, weil es zum Beispiel kein de_en gibt.

916 Beiträge seit 2008
vor 12 Jahren

Hi #coder#,

ich denke allein mit dem Regex ist es nicht getan. Der müsste ja sozusagen alle existierenden Sprachen kennen, das heißt nur zu prüfen ob 2 Buchstaben von einem "-/_" gefolgt von 2 Buchstaben dem gegeben String entsprechen reicht aus meiner Sicht nicht aus. Wie ich das sehe benötigt du eine Liste mit allen erreichbaren Sprachen und dann validierst du dagegen!

Again what learned...

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo rollerfreak2,

es kommt darauf an, ob man Format oder Format und Inhalt prüfen will. Eine Liste fest ins Programm aufzunehmen (ok, du hast nicht explizit gesagt, dass die Liste fest sein soll und auch nicht, dass die im Programm stehen soll, aber man könnte es leicht so interpretieren), ist immer kritisch, wenn irgendwann weitere Möglichkeiten hinzukommen können, die der Benutzer dann nicht verwenden kann, weil sie nicht durch die Prüfung gehen. Es ist also immer die Frage, wie strikt oder wie lose man eine Prüfung macht. Für eine Format-Prüfung ist Regex vollkommen angemessen.

Wie wahrscheinlich es ist, dass eine neue Sprache hinzukommt, sei mal dahingestellt. Es könnte ja auch sein, dass der Code für eine Sprache bzw. ein Country-Code geändert wird (ja, es hat schon Länder gegeben, die umbenannt wurden). Außerdem gilt diese Überlegung über das konkrete Problem hinaus auch für andere Daten.

herbivore

916 Beiträge seit 2008
vor 12 Jahren

Hi herbivore,

wie du bereits geschrieben hast habe ich es nicht explizit erwähnt und natürlich gebe ich dir recht das sowas nicht fest im Code stehen darf.

Wenn der String den Regex entspricht, werden Daten in der Sprache geladen, anonsten soll eine Invalid Format Response gesendet werden.

Aus diesem Text entnehme ich jedoch das der Server die Daten dann in der entsprechenden Sprache vorliegen hat bzw konvertiert, d.h. der richtige weg ist hier m.M.n. das System nach allen Kulturen zu fragen die vorliegen und dann dagegen zu validieren.

Alle verfügbaren Kulturen laden.

Eventuell hab ich aber auch das Zitat falsch interpretiert, dann wird dieser weg so nicht funktionieren.

Again what learned...

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo #coder#,

ich denke auch dass es hier bessere Möglichkeiten als Regex gibt. Z.B. indem du alle dem Service bekannten Kulturen in ein HashSet<T> lädts und dagegen prüfst. Od. in ein Dictionary<ISO Code, SonstWas> und so gleich die Lokalisierungsinfos holst.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"