JavaScript将电话号码从E164转换为国际格式。

3
你好,我有一个电话号码,它是以E164格式表示的:+212640588740,我希望将其转换成国际标准格式+212 640-588740。有这个库http://code.google.com/p/libphonenumber/可以很好地完成这种转换,但它需要提供电话号码和国家代码,而我无法提供,因为我要从数据库中读取电话号码来进行转换。

基本上,我想要一个脚本或库,它以E164作为参数,并将其转换为国际标准格式,如下所示:

+212640588740 => +212 640-588740
+33336578668 => +33 3 36 57 86 68
+17877491410 => +1 787-749-1410

欢迎提出任何想法,谢谢您的支持。


2
你为什么打上了jQuery的标签?你是否正在使用jQuery,并且不介意使用一个使用jQuery的解决方案? - tgkprog
3
如果你不知道国家代码,如何将电话号码转换为国际格式?没有使用国家代码的任何解决方案都会在早期或晚期带来一些问题。基本上,你应该在数据库中添加一个字段来指定每个号码的国家代码。 - A. Wolff
1
你不能从你的电话号码中提取国家代码吗?你需要一个包含所有国家代码的数据库,然后找出与数据库中代码匹配的电话号码前几位数字。 - basilikum
1
例如,您可以在此处找到这样的列表:https://gist.github.com/Goles/3196253 - basilikum
你好,谢谢你们的回答,但是如果不知道国家代码就无法实现这个功能,那么这个链接是如何工作的呢? 链接 只需输入电话号码:+212610478521,您将实时看到格式化效果,那么这是怎么可能的呢? - OussamaLord
1个回答

2
如果您的所有输入都是E164格式,您可以使用com.google.i18n.phonenumbers.PhoneNumberUtil.parse()方法将字符串转换为PhoneNumber实例,然后您可以使用com.google.i18n.phonenumbers.PhoneNumberUtil.format()将其转换为格式为INTERNATIONAL的字符串。
您不需要事先知道国家代码(或解析它),请参阅parse()方法的参数文档:

defaultRegion-...如果保证号码以'+'开头,后跟国家呼叫代码,则可以提供“ZZ”或null。

这里是一个简短的示例:
PhoneNumber number = com.google.i18n.phonenumbers.PhoneNumberUtil.parse("+12781112222", null);
String result = com.google.i18n.phonenumbers.PhoneNumberUtil.format(number, com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);

使用方法请参考文档:

com.google.i18n.phonenumbers.PhoneNumberUtil.parse() com.google.i18n.phonenumbers.PhoneNumberUtil.format()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接