从电话号码中提取代码国家

我有这样的string:+33123456789(法国电话号码)。 我想在不知道国家的情况下提取国家代码(+33)。 例如,它应该工作,如果我有来自另一个国家的另一个电话。 我使用谷歌图书馆https://code.google.com/p/libphonenumber/ 。

如果我知道这个国家,很酷,我可以find国家代码:

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

但我没有find一种方法来parsing一个string,而不知道国家。

好的,我已经join了libphonenumber( https://groups.google.com/forum/?hl=zh-CN&fromgroups#!forum/libphonenumber-discuss )的Google小组,并提出了一个问题。

如果我的电话号码以“+”开头,则不需要在参数中设置国家/地区。 这里是一个例子:

 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()); } 

在这里,您可以将电话号码保存为国际格式的电话号码

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

它以国际格式+94 71 560 4888返回电话号码

所以现在我已经得到了国家代码

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

希望对你有帮助

如果包含电话号码的string总是以这种方式开始(+33或其他国家/地区代码),则应使用正则expression式parsing并获取国家/地区代码,然后使用该库来获取与该号码关联的国家/地区。

这里有一个答案如何find国家调用代码,而不使用第三方库(如真正的开发人员):

获取所有可用国家代码列表,维基百科可以在这里帮助: https : //en.wikipedia.org/wiki/List_of_country_calling_codes

在每个数字都是分支的树结构中parsing数据。

遍历你的树数字,直到你在最后一个分支 – 这是你的国家代码。