2013-05-29 5 views
56

Ich habe eine Zeichenfolge wie folgt: +33123456789 (französische Telefonnummer). Ich möchte den Ländercode (+33) extrahieren, ohne das Land zu kennen. Zum Beispiel sollte es funktionieren, wenn ich ein anderes Telefon aus einem anderen Land habe. Ich benutze die Google-Bibliothek https://code.google.com/p/libphonenumber/.Kennziffer Land aus der Telefonnummer [libphonenumber]

Wenn ich das Land kenne, ist es cool ich den Ländercode finden:

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
int countryCode = phoneUtil.getCountryCodeForRegion(locale.getCountry()); 

aber ich finde keinen Weg, um eine Zeichenfolge zu analysieren, ohne das Land zu wissen.

+0

mögliches Duplikat von [Abrufen des Telefon-Ländercodes mit Android] (http://stackoverflow.com/questions/5402253/getting-telephone-country-code-with-android) – Simon

+0

Siehe auch http://stackoverflow.com/ questions/2530377/list-of-phone-nummer-country-codes – Simon

+1

Die erste Verbindung basiert auf der Ländervorwahl des Telefons. Aber in meinem Fall kann ich eine Schnur haben, die eine französische Telefonnummer mit einem englischen Telefon ist. Also, wenn ich das aktuelle Gebietsschema abrufen, werde ich "EN" haben, aber meine Zeichenfolge wird eine französische Ländercode sein – mrroboaat

Antwort

92

Okay, also ich bin der Google-Gruppe von libphonenumber beigetreten (https://groups.google.com/forum/?hl=en&fromgroups#!forum/libphonenumber-discuss) und ich habe eine Frage gestellt.

Ich muss nicht das Land in Parameter einstellen, wenn meine Telefonnummer mit "+" beginnt. Hier ein Beispiel:

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
try { 
    // phone must begin with '+' 
    PhoneNumber numberProto = phoneUtil.parse(phone, ""); 
    int countryCode = numberProto.getCountryCode(); 
} catch (NumberParseException e) { 
    System.err.println("NumberParseException was thrown: " + e.toString()); 
} 
+3

diese wackadoo verrückte Bibliothek ist erstaunlich und ist eine Milliarde Mal besser als die enthaltene PhoneNumberUtil's Bibliothek in Android – Aphex

+0

@aat würden Sie mir sagen, wie es funktioniert, ohne countryISOCode in (phoneUtil.parse (Telefon, "");) Ihre Antwort, bitte antworten – Ash

+0

@Shweta Wenn Sie eine Frage haben, bitte posten Sie es auf einen neuen Thread auf SO – mrroboaat

-3

Wenn der String, der die Telefonnummer enthält, immer auf diese Weise beginnt (+33 oder ein anderer Ländercode), sollten Sie regex verwenden, um den Ländercode zu erhalten und dann die Bibliothek verwenden, um das Land mit der Nummer zu verknüpfen.

+2

Dies wird nicht funktionieren, da Ländercodes nicht immer 2 Ziffern sind. – Simon

+0

Es gibt eine Menge verschiedener Ländercode: [http://en.wikipedia.org/wiki/List_of_country_calling_codes] (http://en.wikipedia.org/wiki/List_of_country_calling_codes) – mrroboaat

-1

In Hier können Sie die Telefonnummer als internationale Format Telefonnummer speichern

internationalFormatPhoneNumber = phoneUtil.format(givenPhoneNumber, PhoneNumberFormat.INTERNATIONAL); 

es die Telefonnummer als Internationales Format zurück +94 71 560 4888

so jetzt habe ich Ländercode erhalten als diese

String countryCode = internationalFormatPhoneNumber.substring(0,internationalFormatPhoneNumber.indexOf('')).replace('+', ' ').trim(); 

Hope this helfen Ihnen

+1

Was ist 'InternationalFormatPhoneNumber' DataType und PhoneUtil –

+1

Der angegebenePhoneNumber-Parameter ist keine Zeichenfolge. Er muss eine bereits analysierte Telefonnummer sein, für die Sie die Standardregion zum Generieren benötigen. –

+0

@GilSH yesPhoneNumber not String, It ist ein PhoneNumber-Objekt. –

-13

Hier ist eine Antwort, wie Ländercode Aufruf zu finden, ohne Bibliotheken von Drittanbietern zu verwenden (wie echte Entwickler der Fall ist):

Get Liste aller verfügbaren Ländercodes können Wikipedia helfen hier: https://en.wikipedia.org/wiki/List_of_country_calling_codes

Daten in einer Baumstruktur analysieren, wobei jede Ziffer eine Verzweigung ist.

Durchqueren Sie Ihren Baum Ziffer um Ziffer, bis Sie an der letzten Verzweigung sind - das ist Ihre Landesvorwahl.

+7

Ich bin down-Voting dies wegen dieses Kommentars: "Hier ist eine Antwort, wie man Land aufrufen Code ohne Verwendung von Bibliotheken von Drittanbietern (wie echte Entwickler): " Warum glauben Sie, Software macht Fortschritte? Weil die Leute das Rad nicht jedes Mal neu erfinden müssen. Ein REAL-Entwickler verwendet Bibliotheken von Drittanbietern, weil er/sie intelligent ist. –

+2

Ihre persönliche Meinung macht meine Antwort nicht falsch, oder? In der Tat ist dies die einzige richtige und kugelsichere Antwort bis jetzt ... und ja, es erfordert keine Software von Drittanbietern, um zu arbeiten. Sie können meine Lösung gerne kaufen, wenn Sie darauf bestehen, Bibliotheken von Drittanbietern zu verwenden. – Unobic