比较两个电话号码

4

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

我尝试使用PhoneNumberUtils.Compare方法如下:

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

但是它会对"+11234567890"和"34567890"返回true,尽管它们不相同。

有没有更好的方法来解决这个问题?

3个回答

10
最好的解决方法是使用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返回相同的结果。

可以在Google国际化GitHub页面找到。 - Magnus

4
根据文档:
比较电话号码 a 和 b,如果它们足够相似以便于来电显示目的,则返回 true。
这两个号码之间的唯一区别是前缀,但在比较的目的下不重要,因此这两个号码是相同的。

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接