Ich würde gerne ein Werkzeug / eine Bibliothek finden, die vom Benutzer eingegebene Telefonnummern im freien Format verwenden kann, die über eine Website eingegeben wurden, und sie in eine Nummer aufteilen, die für einen Anruf aus einem bestimmten Land geeignet ist.
Das ist nicht ganz so einfach wie es zunächst klingen mag. Die Website ermöglicht es Menschen auf der ganzen Welt, ihre Nummer in beliebiger Weise einzugeben, so dass viele Leute nationale Nummern eingeben (ein Land wird auch in einem anderen Feld bereitgestellt). Manche Leute geben die internationale Nummer in "korrekten" Formaten ein (mit dem "+"), manche geben sie etwas weniger korrekt ein, indem sie das internationale Präfix ihres Landes verwenden.
Ich möchte der Bibliothek / dem Tool das Land, aus dem ich wähle, und die Telefonnummer für das freie Format und optional das Land, dem dies entspricht, mitteilen (da dies dazu beiträgt, den internationalen Code zu generieren, wenn er nicht eingegeben wird), und es verwendet bekannte Muster, um die Zahl zu schätzen, die in meinem Anrufland funktionieren wird.
Wenn Sie zum Beispiel aus den USA an eine britische Nummer anrufen:
%Vor%Oder wenn Sie aus Großbritannien an eine US-Nummer anrufen:
%Vor%Wer irgendwelche (im Idealfall .NET Framework-freundliche) Lösungen kennt, wird mich zweifellos davon abhalten, das Rad neu zu erfinden
Ich habe genau das umgesetzt, Mark. Ich arbeite für einen Mobilfunkanbieter und habe eine internationale SMS-Sendeanwendung. Mir sind keine Drittanbieterbibliotheken bekannt, die diese Regeln implementieren. Wie oben erwähnt, kann man nicht einfach mit zufälligen Eingaben umgehen, da die Telefonnummernformate von Land zu Land variieren. Einige Länder wie Deutschland haben Ortskennzahlen mit variabler Länge und Telefonnummern. Wenn sie den Ländercode nicht dort eingeben, sind Sie versenkt. In meinem Fall kann ich jedoch davon ausgehen, dass es sich bei einer Landesvorwahl um eine USA-Telefonnummer handelt. Die Ergebnisse meines Filters haben sich als sehr genau bei den Benutzern und Eingaben erwiesen, die ich hatte.
Man kann einige Annahmen machen, und indem man die Zielgruppe kennt, die Eingaben protokolliert und analysiert, kann man Dinge einwählen. Meine erste Implementierung war für eine "White Label" -Web-App, die von verschiedenen Leuten getestet wird auf der ganzen Welt. Ich habe schnell festgestellt, dass die meisten ausländischen Leute zusammen agieren und an das Quasi-Standard-Format gewöhnt sind. Normalerweise sind Amerikaner, die Telefonnummern eingeben, am verwirrtsten. Die Europäer sind an das internationale Wählen sehr gewöhnt.
Die erste Regel besteht darin, alles außer Ziffern und einem führenden '+' auszublenden.
Wenn die resultierende Zahl weniger als 8 Ziffern hat, handelt es sich um Junk, Benutzerfehler.
Wenn die resultierende Zahl mit einem "+" beginnt, wird angenommen, dass es das Standardformat ist und dass die nächsten 2-6 Ziffern den "Ländercode" darstellen. Ermitteln Sie den Ländercode und bearbeiten Sie dann die verbleibenden Ziffern gemäß den Regeln für dieses Land.
Wenn die Zahl mit 0 beginnt, gehen Sie davon aus, dass jemand ein internationales Zugangspräfix eingibt und führende Nullen und Einsen entfernt, dann: Wenn es sich bei der verbleibenden Zahl um 10 Ziffern handelt, nehmen Sie an, dass es sich um eine von einem Amerikaner eingegebene USA-Nummer handelt, und gehen Sie entsprechend vor. Wenn die verbleibende Anzahl nicht 10 Ziffern, sondern mindestens 8 ist, nehmen Sie an, dass die ersten 2-6 Ziffern eine Landesvorwahl sind, suchen Sie die Landesvorwahl und bearbeiten Sie diese nach den Regeln dieses Landes.
Wenn die Zahl mit einer 1 beginnt und es sich um insgesamt 11 Ziffern handelt, nehmen Sie an, dass es sich um eine USA-Nummer (oder eine karibische Insel) handelt, und bearbeiten Sie sie entsprechend.
Wenn die Nummer mit einer 1 beginnt und nicht 11 Ziffern insgesamt ist, entfernen Sie die führenden 1, sehen Sie, ob noch mindestens 8 Ziffern vorhanden sind, und nehmen Sie an, dass die verbleibenden führenden 2 bis 6 Ziffern ein Ländercode und ein Prozess pro Land sind Regeln.
Wenn die Zahl nicht mit +, 0 oder 1 beginnt und mindestens 8 Ziffern lang ist, nehmen wir an, dass es in der Standardschreibweise ohne das +, das heißt den Ländercode zuerst, die ersten 2 bis 6 Ziffern verwendet der Ländercode und der Prozess gemäß den Regeln dieses Landes.
Der Trick bei all dem ist eine Zuordnung aller Ländercodes der Welt und der Nummerierungsplaninformationen für jedes Land. Ich habe diese Karte und die Regeln für viele Länder. Wenn Sie diese Informationen möchten, würde ich gerne teilen, zusammen mit einigen C # -Code, der herausfindet, welches Land. Melde mich.
Eine große Hilfe dabei ist, den Namen des Landes, das Ihre Software für den Benutzer erraten hat, zurückzuschicken. Sie werden schnell verstehen, wenn sie versuchen, eine deutsche Telefonnummer einzugeben, und Ihre Software fragt sie, ob sie versuchen, Guam zu wählen!
Die Bibliothek von Google zum Parsen, Formatieren, Speichern und Validieren internationaler Telefonnummern wurde jetzt nach C # portiert.
Nein, gibt es nicht :) Es gibt sehr wenige Regeln, die Telefonnummern zwischen Nationen regeln. Einige Länder haben sogar mehrere Darstellungen.
Im Vereinigten Königreich gibt es beispielsweise Ortskennzahlen mit variabler Größe, z. B .:
Es gibt einen "Standard", um internationale (und nationale) Telefonnummern zu formatieren. Sie sehen so aus: +31 42 123 4567 (+ Landesvorwahlnummer callthrough). Beispiel aus Wikipedia . Allerdings solltest du nicht erwarten, dass jemand so eintritt. Nach meiner Erfahrung werden sich die Benutzer höchstwahrscheinlich an das Format halten, an das sie gewöhnt sind.
Ich kenne keine Bibliothek, die zwischen allen (meistens lokalen) Darstellungen in die von mir erwähnte oder irgendein anderes Format konvertiert.
Tags und Links c# phone-number