我可以使用iOS上的地址簿框架从设备中检索联系人的电话号码。如何分离或识别哪个国家/地区代码以及哪个是实际电话号码? 有可能吗?
答案 0 :(得分:5)
国家/地区代码是一个相当混乱的主题,但足够标准,通过一些程序员维护,您可以解决它。
您可以通过其初始子序列识别国家/地区代码。执行以下算法:
构建一个简单的数据库 - 甚至可以存储为平面文件并加载到内存中的字典中 - 国家代码。
递归地从n = 1到3,检查电话号码的前n位是否与任何国家/地区代码匹配。如果是,那就是你的国家代码。如果尝试3失败,则不是有效的国家/地区代码。
如果你喜欢处理准歧义。如果您看到国家/地区代码重叠,例如如果你看到维尔京群岛的“1340”,那是因为在一些可能无关紧要的意义上它是美国国家代码“1”的子集国家代码有时反映地缘政治情况,通常通过将国家代码分成下一个数字来表示。 “1”将是官方国家代码,但您更感兴趣取决于您的申请。
注意:当苏联解体时发生这种情况时需要维护。
现在,当你必须处理一些#已经有国家代码而有些#不存在这样的事实时,事情会变得更加混乱。我发现国家代码也可以作为领先区号发现的唯一国家代码是新加坡 - 我认为它是+65-65...
。通过良好的准确性,您可以使用以下行的业务逻辑:
答案 1 :(得分:1)
我所做的是在维基百科上创建一个包含所有国家/地区呼叫代码的数组。然后,当我有一个电话号码时,我尝试将前四位数字与一个国家/地区呼叫代码匹配。如果没有匹配,请尝试前三位数,依此类推。最终我找到了调用代码。
答案 2 :(得分:0)
经过一些研究后,我发现这个lib似乎可以完成这项工作: https://github.com/iziz/libPhoneNumber-iOS
答案 3 :(得分:0)
国家/地区的电话代码很容易通过电话号码检测到。
您需要做的第一件事就是将调用代码解析为树,其中每个数字代表一个分支。
然后,查找国家/地区代码就像逐行遍历树一样简单,直到最后一个国家/地区代码匹配为止。
此时(2016年7月),最长的国家/地区呼叫代码有5个数字,因此您的树不应超过5个分支级别。
答案 4 :(得分:-7)
我们无法从电话号码中识别国家/地区代码。