10

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

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

4

2 回答 2

9

您可以使用libphonenumber简单地将您的号码转换为 E164 ,并在转换后检查两个字符串是否相同。如果它们相同,则表示无法格式化数字,否则您将从库中获取的数字将被格式化为 E164。

这是您可以转换的方法

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

最后将formattedNumberinputNumber进行比较

于 2014-09-07T16:02:31.950 回答
1

isValidNumber看起来您似乎需要根据自己的情况来玩isPossibleNumberformat当然不能保证给你一些实际可拨号的东西,请参阅javadocs演示也建议了这一点,当isValidNumber为 false 时不显示格式。

我也在处理这个 FWIW。在美国数字的背景下:问题是我想解析 usingisPossibleNumber以尽可能宽松,并将数字存储在 E164 中。但是,我们接受,例如+15551212isPossibleNumber尽管显然(我认为)无法在任何地方拨号,但该字符串本身甚至会通过。

于 2017-01-17T19:08:29.737 回答