Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best way for converting phone numbers into international format (E.164) using Java?

What is the best way for converting phone numbers into international format (E.164) using Java?

Given a 'phone number' and a country id (let's say an ISO country code), I would like to convert it into a standard E.164 international format phone number.

I am sure I can do it by hand quite easily - but I would not be sure it would work correctly in all situations.

Which Java framework/library/utility would you recommend to accomplish this?

P.S. The 'phone number' could be anything identifiable by the general public - such as

* (510) 786-0404 * 1-800-GOT-MILK * +44-(0)800-7310658 

that last one is my favourite - it is how some people write their number in the UK and means that you should either use the +44 or you should use the 0.

The E.164 format number should be all numeric, and use the full international country code (e.g.+44)

like image 445
Vihung Avatar asked Oct 09 '08 13:10

Vihung


People also ask

How do you convert numbers to international format?

164 notation a leading '0' is removed. The UK mobile phone number '07911 123456' in international format is '+44 7911 123456', so without the first zero. Secondly in the E. 164 notation all spaces, dashes ['-'] and parentheses [ '(' and ')'] are removed, besides the leading '+' all characters should be numeric.

What is E 164 format India?

E. 164 is the international telephone numbering plan that ensures each device on the PSTN has globally unique number. This number allows phone calls and text messages can be correctly routed to individual phones in different countries.


1 Answers

Google provides a library for working with phone numbers. The same one they use for Android

http://code.google.com/p/libphonenumber/

String swissNumberStr = "044 668 18 00" PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try {   PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH"); } catch (NumberParseException e) {   System.err.println("NumberParseException was thrown: " + e.toString()); }  // Produces "+41 44 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.INTERNATIONAL)); // Produces "044 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.NATIONAL)); // Produces "+41446681800" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.E164)); 
like image 56
Collin Peters Avatar answered Oct 14 '22 02:10

Collin Peters