我想我在这里面临一个悖论。处理电话号码格式
我想要做的,当我接收/拨打电话,我有多少,所以我需要知道,如果它的国际电话号码,如果一个本地号码等
的问题是是:
- 对于我知道,如果一个号码是国际性的,我需要解析,并检查它的长度,但长度不同,从国家到国家,所以,我应该做的分析和识别的方法各国? (在我看来不起作用);
- 对于我来说,如果它是一个本地号码,我需要区号,所以我必须做同样的事情,解析号码并检查长度,根据区号长度得到第一个号码;
它很难找到解决方案。图书馆libphonenumber提供了很多有用的类,但我认为可以帮助我的那个类,把我带到另一个悖论。
phoneUtil.parse(number,countryAcronym)方法返回带有国家代码的号码,但是它的功能是,如果我通过带有首字母缩写词“US”的号码返回国家代码为'1'的号码,现在如果我将首字母缩写词改为“BR”,它会更改数字并返回巴西的国家代码“55”。所以,无论如何,我需要根据我得到的数字来确定国家的首字母缩略词。
EX:
numberReturned = phoneUtil.parse(phoneNumber, "US");
phoneUtil.format(numberReturned, PhoneNumberFormat.INTERNATIONAL);
上面的代码,返回数字与美国的国家代码,但现在如果我改变“美国的”任何其他国家的首字母缩写,将返回相同的号码,但与国家代码那个国家。
我知道这LIB不应该猜测哪个国家的数量是(这将是真棒!),但多数民众赞成我需要什么。
这真的让我的头脑变得疯狂。我需要来自SO的明智的法师的好建议。
如果你能帮我做出一个好决定,我会非常感激。
谢谢。
PS:如果您已经使用libphonenumber,并与此更多的经验,请指导我使用哪一类,如果有一个能够解决这个问题。 =)
是的。但问题是,我必须支持几乎所有国家。这将是很难,很多研究和思考得出一个简单而明智的结论。一个好的方法是让国家的数字是唯一的方法来解析这个数字呢?不管怎么说,多谢拉。 – rogcg
非常,是的。您需要检查电话号码字符串是以“+”开头还是以任何适合您所在国家/地区的国际电话为前缀的前缀 - 如果不在那里,那么它是全国性的。电话知道要发送哪些数字来代替+号,但我不知道如何从代码中检索数字。 –