【问题标题】:compare two phone numbers比较两个电话号码
【发布时间】:2014-08-08 09:39:43
【问题描述】:

我正在尝试查找两个电话号码是否相同(两个相同的电话号码格式可能不同,因为 +11234567890 与 1234567890 和 0011234567890 相同)

我试过 PhoneNumberUtils.Compare 像这样:

if(PhoneNumberUtils.compare("+11234567890", "34567890"))
{
    Toast.makeText(getApplicationContext(), "Are same", Toast.LENGTH_LONG).show();
}

但是对于“+11234567890”、“34567890”返回true,但它们并不相同。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: phone-number libphonenumber


    【解决方案1】:

    解决这个问题的最好方法是使用谷歌的 libphonenumber 库

    PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
    
    MatchType mt = pnu.isNumberMatch("+11234567890", "34567890");
    if( mt == MatchType.NSN_MATCH || mt == MatchType.EXACT_MATCH )
    {
        Toast.makeText(getApplicationContext(), "are Same" , Toast.LENGTH_LONG).show();
    }
    

    如果我们使用MatchType.SHORT_NSN_MATCH,它将返回与PhoneNumberUtils.compare相同的结果

    【讨论】:

    【解决方案2】:

    根据文档:

    比较电话号码 a 和 b,如果它们相同则返回 true 足以用于来电显示。

    数字相同,因为唯一的区别是前缀,这对于比较而言不是必需的。

    【讨论】:

      【解决方案3】:

      如果你真的想区分电话号码和电话号码加上它的前缀,你应该使用字符串比较方法。

      String number1 = "+11234567890"; 
      String number2 = "34567890"; 
      number1.compareTo(number2);
      

      【讨论】:

        猜你喜欢
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        相关资源
        最近更新 更多