2014-01-27 2 views
5

Kann ich feststellen, ob der Benutzer eine Telefonnummer eingegeben hat, die sicher in E164 formatiert werden kann?Nur wenn möglich in E164 konvertieren?

Für Deutschland erfordert dies, dass der Benutzer seine Eingabe mit einer lokalen Vorwahl beginnt. Zum Beispiel kann 123456 eine Teilnehmernummer in seiner Stadt sein, aber es kann nicht in E164 formatiert werden, weil wir seine lokale Vorwahl nicht kennen. Dann möchte ich den Eintrag so behalten wie er ist. Im Gegensatz dazu ist die Eingabe 089123456 unabhängig von der Vorwahl und könnte in E164 formatiert werden, weil wir wissen, dass er aus Deutschland kommt und wir dies in +4989123456 umwandeln könnten.

Antwort

4

Sie können Ihre Nummer einfach in E164 konvertieren, indem Sie libphonenumber verwenden und nach der Konvertierung prüfen, ob beide Strings gleich sind oder nicht. Wenn sie gleich sind, kann eine Zahl nicht formatiert werden, andernfalls wird die Nummer, die Sie aus der Bibliothek erhalten, in E164 formatiert.

Hier ist, wie Sie

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
String formattedNumber = phoneUtil.format(inputNumber, PhoneNumberFormat.E164); 

Schließlich vergleichen formattedNumber mit Inputnumber

+1

Ich glaube nicht, dass das richtig ist, oder es zumindest die Frage missversteht. – jberryman

0

konvertieren Es sieht aus, als ob Sie müssen mit isValidNumber und isPossibleNumber für Ihren Fall spielen. format ist sicherlich nicht garantiert, dass Sie etwas tatsächlich wählbar, siehe javadocs. Dies wird auch von der demo vorgeschlagen, wo die Formatierung nicht angezeigt wird, wenn isValidNumber falsch ist.

Ich habe auch mit diesem FWIW zu tun. Im Zusammenhang mit US-Nummern: Das Problem ist, ich würde gerne mit isPossibleNumber analysieren, um so nachsichtig wie möglich zu sein, und speichern Sie die Nummer in E164. Jedoch akzeptieren wir z.B. +15551212. Diese Zeichenfolge selbst passiert sogar isPossibleNumber trotz klar (ich denke) nicht überall wählbar.

Verwandte Themen