![]() |
Telefonnummer Format Weltweit
Hallo zusammen,
ich muss für einen Auftrag bestehende Telefonnummern (weltweit) auslesen und die in einem bestimmten Format abspeichern. Ich gebe mal das Beispiel für Deutschland. Ich kann ja eine Telefonnummer wie folgt schreiben :
|
AW: Telefonnummer Format Weltweit
Ist zwar nicht Delphi, aber du solltest einen guten Überblick und Anhaltspunkt haben
![]() |
AW: Telefonnummer Format Weltweit
Wie sicher kannst du sein, dass alle Rufnummern wohlgeformt hinterlegt sind? (Unabhängig vom genauen Format.)
Kommen nur deutsche Nummern vor, oder kann prinzipiell alles dabei sein? Das Problem bei Rufnummern ist, dass die Länder- und Ortsvorwahlen keine feste Länge haben. Es gibt Länder mit zweistelligen Nummern, aber auch welche mit 3 Stellen. Auch Ortsvorwahlen können 2-4 Stellen haben, zumindest in Deutschland. Wie es international aussieht weiss ich nicht. Wenn die Eingabe daher nicht garantiert wohlgeformt ist, hast du im Grunde erstmal keine andere Chance als alle Zeichen ausser die Ziffern zu entfernen, und die Nummer bzgl. der Anzeige neu aufzubauen. Um dies zu tun braucht man dann aber fast schon zwingend eine Liste aller Länder- und Ortsvorwahlen weltweit, mit denen man dann Ziffer für Ziffer durchgehen muss um zu ermitteln wo nun die Leerzeichen hin kommen. Dazu kommt das Problem, dass die sog. Verkehrsausscheidungsziffer (die 0 vor Vorwahlen wenn keine Ländervorwahl gewählt wird, die manchmal in Klammern steht) optional ist, und eben nicht immer in Klammern steht, wenn sie denn überhaupt da steht. Die E.123 Empfehlung sieht es z.B. gar nicht vor diese überhaupt anzugeben, wenn internationale Nummern gemeint sind. Und da kommt schon das nächste Problem: Sind garantiert alle Nummern mit Ländervorwahl eingetragen? Wenn nicht, dann wird es schon recht fummelig. (Gut, amn kann die daran erkennen, dass sie nicht mit "+", "00" oder "1..9" anfangen. Nichtsdestotrotz eine Verkomplizierung.) Gleiches Spiel für Ortsvorwahlen. Telefonnummern sind für strukturierte Systeme wie Computer ein Graus. Gewachsenes Kraut. Ultimativ würde ich die Datenbank (ich vermute mal es steht eine dahinter) anders aufbauen, und für Länder- Orts- Teilnehmer und Durchwahl je ein eigenes Feld nehmen. Dann hat man ein Mal den Aufwand die Bestandsdaten dahin zu überführen, aber ab dann läuft's erheblich geordneter. Und man kann die Darstellung nachher auch noch wunderschön variabel halten und an den Kunden anpassen. (Oder ihm gar die Wahl zwischen verschiedenen Formaten lassen!) |
AW: Telefonnummer Format Weltweit
Steig über die
![]() oder hier ![]() Gruß K-H |
AW: Telefonnummer Format Weltweit
Zitat:
Als Einstieg wäre auch eine Delphi-Variante vorhanden ![]() allerdings ist die da genutzte DLL schon etwas älter. Das Projekt auf GitHub erhält sehr oft Aktualisierungen von Formaten und Varianten. |
AW: Telefonnummer Format Weltweit
Guten Morgen,
danke erstmal für die vielen Antworten. Ich hätte nicht gedacht, dass es so kompliziert ist. Ich merke erst jetzt, dass ich meine Frage noch weiter hätte präzisieren müssen. Ich lese die Telefonnummern über das TMS Cloud Pack von dem iCloud Adressbuch aus in einer Windows Anwendung. Da sind die 4 Formate aus meinem ersten Beitrag enthalten. Ich will nicht nach Landesvorwahl, Ortsvorwahl und eigentlicher Rufnummer trennen. Ich möchte lediglich nur das erste Format erhalten aus meinem ersten Beitrag. Für Deutschland prüfe ich ab, ist das erste Zeichen eine Null, dann ersetze ich die 0 durch +49. Für diesen Fall gibt es eine Lokalisierung in den Einstellungen der Windows Anwendung. Steht die (0) mit in der Telefonnummer, lösche ich diese raus und wird die Landesvorwahl mit 0049 angegeben, dann mache ich daraus +49. Mir geht es hauptsächlich darum, kann ich das Prinzip mit der Null bei den Vorwahlen auch für andere Länder übernehmen oder nicht ? Mir geht es darum, dass ich in der Datenbank ein einheitliches Format habe. |
AW: Telefonnummer Format Weltweit
Wenn Du eine 00x in die Hände bekommst, dann kannst Du so vorgehen. Hast Du nur eine oder keine führende Null, dann enthält die Nummer keine Ländervorwahl.
Was mit 49/811.2244557 und ähnlichen Krüppeln ist, steht auf einem ganz anderen Blatt Gruß K-H |
AW: Telefonnummer Format Weltweit
Die 00 hat mit "anderen" Ländern nichts zu tun, denn das ist die Ziffernfolge die in Deutschland eine internationale Rufnummer einleitet.
In jedem Land kann die anders sein (meistens ist das aber gleich) spielt aber keine Geige, wenn sich die Rufnummern auf den Kontext Deutschland beziehen. Dieses (0) nach dem internationalen Prefix ist eigentlich überflüssig und kann ersatzlos gestrichen werden. Vorsicht aber bei italienischen Rufnummern, da ist die 0 Pflicht. Es ist eben nicht trivial und das Projekt gibt dir einen Anhaltspunkt wie komplex das Thema ist. |
AW: Telefonnummer Format Weltweit
Falls das mal noch jemand sucht, ich hab einen Wrapper um den C#-Port gebastelt. 32 bit und 64 bit Unterstützung
![]() Ich werde das immer aktuell zum Port halten. |
AW: Telefonnummer Format Weltweit
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz