联系电话号码作为国家代码或本地的唯一密钥问题

时间:2017-01-18 06:33:15

标签: ios web-services contacts whatsapp mobile-application

您好我正在开发需要手机号码作为唯一键的应用程序,我想出了4个差异条件如下:

例如编号为:8888822222,可以保存在任何用户联系簿中:

  • 8888822222
  • 08888822222
  • +18888822222(含国家/地区代码)
  • +108888822222(含国家/地区代码)

虽然4以上是相同的数字,但在字符串的情况下可能会有所不同。

那么如何检查并将此4视为相同的数字。任何人都可以帮助我吗?

修改

我的问题是,对于带有差异国家/地区代码和不同联系号码长度的号码,我应该考虑什么。

2 个答案:

答案 0 :(得分:1)

您的所有电话号码的长度至少为10位,因此您可以从您的联系号码字符串中获取最后10位数,并检查任何唯一键字段是否包含该字符串。

例如

let contactNumStr = "+18888822222"
let onlyNum = contactNumStr.substring(from:contactNumStr.index(contactNumStr.endIndex, offsetBy: -10))
//8888822222 will be store in onlyNum

现在,您可以在数据库中检查此contains的唯一号码onlyNum

请注意,您需要检查contains不是完全匹配。

答案 1 :(得分:0)

也许这会帮助你

if(String(phone.characters.prefix(4)) == ("0888")){
    phone = String(phone.characters.dropFirst())
}else if(String(phone.characters.prefix(3)) == ("+18")){
    phone = phone.textureName.replacingOccurrences(of: "+1", with: "", options: NSString.CompareOptions.literal, range:nil)
}else if(String(phone.characters.prefix(3)) == ("+10")){
    phone = phone.textureName.replacingOccurrences(of: "+10", with: "", options: NSString.CompareOptions.literal, range:nil)
}else {
    //
}