仅在可能的情况下转换为E164?

时间:2014-01-27 06:55:05

标签: libphonenumber

我可以确定用户是否输入了可以安全格式化为E164的电话号码吗?

对于德国,这要求用户使用本地区号开始输入。例如,123456可能是他所在城市的用户号码,但不能格式化为E164,因为我们不知道他的本地区号。然后我想保持这个条目不变。相反,输入089123456独立于区号,可以格式化为E164,因为我们知道他来自德国,我们可以将其转换为+4989123456

2 个答案:

答案 0 :(得分:5)

您只需使用libphonenumber将您的号码转换为E164即可 转换后检查两个字符串是否相同。如果它们相同意味着数字无法格式化,否则您从库中获得的数字将格式化为E164。

以下是转换方式

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

最后将 formattedNumber inputNumber

进行比较

答案 1 :(得分:0)

您的案件看起来似乎需要与isValidNumberisPossibleNumber一起玩。 format当然不能保证能为您提供实际可拨打的内容,请参阅javadocs。这也是demo建议的,其中isValidNumber为false时不显示格式。

我也正在处理这个FWIW。在美国数字的背景下:问题是我想使用isPossibleNumber进行解析以尽可能宽松,并将数字存储在E164中。然而,我们接受,例如, +15551212。这个字符串本身甚至通过了isPossibleNumber,尽管很明显(我认为)不能在任何地方进行调用。