Domino 9 und frühere Versionen > ND7: Entwicklung
Telefonnummer "entformatieren"
Tim Pistor:
--- Zitat von: WernerMo am 20.05.10 - 15:55:40 ---Hallo,
ich will ja nicht vorlaut sein, aber evtl. gibt es ein Zeichen, das Ihr so nicht entfernen wollt?
Gerade im Internationale Umfeld ist das Kreuz"+" in der Telefonnummer von großer Bedeutung, evtl. sollte man dem zumindest an erste Stelle eine Sonderrolle zukommen lassen?
Gruß Werner
--- Ende Zitat ---
Und um das zweite "+" bei "+49 9229+2345" zu killen macht man sowas :
A := @implode( @Explode(dirtyNumber; @implode(@Explode( dirtyNumber ; "0123456789+"))) ; "" );
@Left(A; 1) + @Left(@replacesubstring(A; "+"; "") ; -1);
Jetzt wirds aber langsam schmutzig ;) Für solche "extremfälle" brauchts dann mal halt ein wenig IQ beim Anwender ;)
WernerMo:
Hallo,
damit wäre ich ganz und garnicht einverstanden:
--- Zitat von: Peter Klett am 20.05.10 - 16:07:28 ---Man nimmt alle die Zeichen, die man nicht entfernen möchte, in den String mit den erlaubten Zeichen auf, z.B. auch das +
--- Ende Zitat ---
Zum Glück hat ja Tim aus seiner "eleganten" Lösung eine "elegant²" gemacht.
Suuuuuuuper gut Tim.
Gruß aus Weißenburg (=Gefängnis)
Werner
cebolina:
--- Zitat ---Und um das zweite "+" bei "+49 9229+2345" zu killen macht man sowas :
A := @implode( @Explode(dirtyNumber; @implode(@Explode( dirtyNumber ; "0123456789+"))) ; "" );
@Left(A; 1) + @Left(@replacesubstring(A; "+"; "") ; -1);
--- Ende Zitat ---
damit bin jetzt ich nicht einverstanden ;D
Es gibt viele Telefonnummern, die in diesem Format vorhanden sind:
+49(0)123 456789
Ergebnis ist dann +490123456789 = falsch
korrekt müsste das Ergebnnis lauten: +49123456789 (ohne 0)
Und wenn die Zeichenfolge nicht mit + anfängt (man weiß ja nie), ist das Ergebnis wieder falsch.
"0123 456789" ergibt dann "00123456789".
Aber wie Tim schon sagte - jetzt wirds langsam wirklich schmutzig.
Gruß
Stefan
Peter Klett:
Wenn wir schon mal am Erbsenzählen sind:
Die Aufgabe/Anfrage war:
"Es sollen also alle Zeichen, die keine Ziffern sind, herausgenommen werden. Wie kann ich das mit der Formelsprache umsetzen?"
Diese Aufgabe ist, denke ich, bestens gelöst worden.
Die Annahme, dass die "elegant²"
A := @implode( @Explode(dirtyNumber; @implode(@Explode( dirtyNumber ; "0123456789+"))) ; "" );
@Left(A; 1) + @Left(@replacesubstring(A; "+"; "") ; -1);
einen Fehler bei fehlendem + als erstem Zeichen bringt, ist ein Interpretationsfehler, aber tatsächlich ist sie nicht 100%ig, denn bei mehr als einem + am Anfang wird die erste Ziffer nach den + entfernt. Erst @Left und dann @ReplaceSubstring (Reihenfolgeproblem) ist hoffentlich ganz korrekt.
A := @Implode (@Explode (dirtyNumber; @Implode (@Explode (dirtyNumber; "0123456789+"))) ; "" );
@Left(A; 1) + @ReplaceSubstring(@Left(A; -1); "+"; "");
Doch das ist jetzt oberpingelig. Wenn eine Telefonnummer wirklich ganz korrekt angezeigt werden soll (z.B. um damit direkt zu wählen), würde ich das schon bei der Eingabe entsprechend validieren, und nicht erst in einer Ansicht irgendwie geraderechnen. Und das erfolgt ja, entweder technisch oder organisatorisch, wenn ich David richtig verstanden habe.
FriFra:
"+" durch "" zu ersetzen ist falsch. Richtig wäre hier "00", denn "+49" ist "0049".
Ich hab vor kurzem genau für diese Probleme eine Lösung gebaut.
ich ersetze z.B. immer "(0)" -> "", "+"->"00"
Erst danach fliegen alle nicht numerischen Zeichen raus. Weiterhin ersetze ich im Nachgang alle "0049" durch "0"
Und zum Schluß schneide ich von allen lokalen Nummern die Orstvorwahl weg. Die Landes und Ortsvorwahl hab ich dabei konfigurierbar gehalten, damit man das Ergebnis gem. den lokalen Gegebenheitem steuern kann.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln