【问题标题】:How to match phone numbers from user's contact list if numbers are in different format?如果号码格式不同,如何匹配用户联系人列表中的电话号码?
【发布时间】:2020-11-25 07:50:11
【问题描述】:

我有一个关于如何将用户联系人列表中的电话号码与我在远程数据库中的电话号码匹配的问题。流程是这样的:

  1. 用户使用他的电话号码在我的应用上注册(其他任何用户也是如此)
  2. 应用请求联系权限
  3. 应用将联系人(电话号码)发送到服务器以匹配其他注册号码

我遇到的问题是用户以以下格式注册他们的电话号码:+1XXXYYY。 例如,人 A 注册号码为 +1222333。可能会发生 B 的联系人列表中有 A 为 0222333 的情况,我应该如何匹配该号码?我不知道前缀是“+1”还是其他数字。

【问题讨论】:

    标签: android ios match


    【解决方案1】:

    我想推荐 libphonenumber 库:https://github.com/google/libphonenumber 它可以解析数字,然后输出为标准化格式。官方库支持 Java、C++ 和 JavaScript,但也有其他语言的端口(见 Github 页面底部)

    这是一个关于如何在 java 中将国内号码格式化为国际号码的快速示例

    public static String getInternationalNumber(String localNumber, String regionCode) {
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        Phonenumber.PhoneNumber phoneNumber;
        try {
            phoneNumber = phoneUtil.parse(localNumber, regionCode);
        }
        catch (NumberParseException e) {
            return null;
        }
    
        return (phoneUtil.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL));
    }
    

    您可以假设用户联系人列表中的号码与用户的国家代码相同。

    要查找用户电话号码的国家代码,您可以执行以下操作(假设它是国际号码)

    public static String getRegionCode(String phone) {
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        Phonenumber.PhoneNumber phoneNumber;
        try {
            phoneNumber = phoneUtil.parse(phone, "");
        }
        catch (NumberParseException e) {
            return null;
        }
        return phoneUtil.getRegionCodeForNumber(phoneNumber);
    }
    

    【讨论】:

    • "您大概可以假设用户联系人列表中的号码与用户的国家代码相同。"我在想,大概是这样吧。我可以依靠它。顺便说一句,好图书馆:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多