2009-06-03 6 views
0

Ich habe kürzlich festgestellt, dass einige Länder Gleitkommazahlen mit unterschiedlicher Komma/Periodendarstellung anzeigen.Lokalisierung in Textvalidierung

dh. wir würden 12.500.34 haben, und einige Länder würden es als 12.500,34 aufzählen

Das mag kein Problem mit der Anzeige sein, aber was ist mit Texteingabe? Zum Beispiel stelle ich mir vor, dass, wenn ich einen Dezimaltyp hätte und es in einem Label anzeigen würde, die ToString() -Methode (oder ein Äquiv. In der Sprache Ihrer Wahl) die Lokalisierungseinstellungen verwenden und korrekt anzeigen würde, und die verschiedenen Pars 'str -> Anzahl 'Methoden würden wahrscheinlich auch funktionieren.

Aber was ist mit Textvalidierung? Wie gesagt, ich möchte, dass ein Textfeld nur 5 Zahlen erlaubt, und dann einen optionalen Dezimalpunkt und bis zu 4 weitere Zahlen? Was ist eine allgemeine Lösung in diesem Fall, wenn Sie nicht wissen, was ihre Begrenzer sein werden? Offensichtlich werden die hartkodierten Regex-Muster, die ich jetzt benutze, scheitern, also frage ich mich nur, was einige von euch in diesen Fällen getan haben?

Dank für jede Beratung

Antwort

0

Wo auch immer sie leben, oder aber sie angegeben sind, müssen Sie Regeln verkapseln, die lokalspezifische oder parsen Eingänge sein (Validierung) sind oder das Gebietsschema spezifisch sein könnten. Auf diese Weise können Sie die Implementierung basierend auf dem Gebietsschema wechseln.

Je nachdem, wie und wo diese sind, können Sie einige Frameworks (JPF does this) in einem Framework anwenden, oder Sie können auch Ihr Framework erweitern, um damit zu arbeiten.

+0

Ja, das war, was ich gehofft hatte, war nicht die Antwort, aber es war mein grundlegender Backup-Plan. Ich habe nur gehofft, dass jemand eine magische Kugel dafür hat, aber es scheint niemand tut :) – LoveMeSomeCode

0

Dies wird sehr sprachabhängig sein. Keine zwei Sprachen behandeln das genau gleich.

Ich kann einen Rat über Java geben. In Java würden Sie das mit NumberFormat handhaben. Wenn NumberFormat.parse() funktioniert, ohne eine Ausnahme auszulösen, dann ist es eine gültige Zahl in welchem ​​Gebietsschema auch immer verwendet wird. Sie können die maximale Anzahl an Dezimalstellen festlegen, die Sie akzeptieren, usw. All dies ist sehr Java-spezifisch, daher werde ich nicht darauf eingehen, es sei denn, Sie sagen, dass Sie Java verwenden.