3

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

我试过 PhoneNumberUtils.Compare 像这样:

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

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

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

4

3 回答 3

9

解决此问题的最佳方法是使用 Google 的 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

于 2014-08-09T04:05:17.797 回答
4

根据文档:

比较电话号码 a 和 b,如果它们 对于呼叫者 ID 而言足够相同,则返回 true。

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

于 2014-08-08T09:43:32.933 回答
0

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

String number1 = "+11234567890"; 
String number2 = "34567890"; 
number1.compareTo(number2);
于 2014-08-08T09:47:22.560 回答