如果我们有一个像358541321
没有国家代码的电话号码,有时当电话响起时,它说(+56 - 358541321)
或+56358541321
。如何确定两个电话号码是否相同?
如何检测环状编号是否是第一个数字?
该号码未保存在手机内存中以进行电话查询。
如果我们有一个像358541321
没有国家代码的电话号码,有时当电话响起时,它说(+56 - 358541321)
或+56358541321
。如何确定两个电话号码是否相同?
如何检测环状编号是否是第一个数字?
该号码未保存在手机内存中以进行电话查询。
这个问题的常见解决方案就是比较最后一个X(例如7或8,取决于你的国家)的数字。在极少数情况下,这可能会导致误报,但通常这是一个很好的近似值,它可以避免国家或地区代码不同或缺失的问题。
Java regular expression
和字符串函数replaceAll
可以很容易地做到这一点。
这样,
String one = "+51 - 3245678";
String two = "+513245678";
one = one.replaceAll("[^0-9]","");
two = two.replaceAll("[^0-9]","");
Toast.makeText(this, one+" -- "+two, Toast.LENGTH_LONG).show();
if(one.equalsIgnoreCase(two))
{
Toast.makeText(this, "Both Are Equal", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "Different", Toast.LENGTH_LONG).show();
}
https://developer.android.com/reference/android/telephony/PhoneNumberUtils.html 提供了一个巧妙的解决办法:
import android.telephony.PhoneNumberUtils;
...
String one = "+51 - 3245678";
String two = "+513245678";
boolean isSame = PhoneNumberUtils.compare(one, two);
这不是很好的解决方案 – Ata 2012-08-07 11:50:28
@Ata:这就是通常通过在通讯录中查找电话号码的电话应用程序完成。如果您有更好的主意,请随时将其分享为解决方案。 – Heinzi 2012-08-07 11:54:25