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?
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...
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
..
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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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...
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
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...
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!"