带有签名PhoneNumberUtils.compare的(Context context, String a, String b)允许您比较两个电话号码,看看它们是否相等。文件上说:
检查资源以确定是使用严格的比较算法还是使用松散的比较算法。
这是什么意思?如何检查资源以确定使用哪种算法,以及这些算法有何不同?
发布于 2018-11-23 13:24:06
如何检查资源以确定使用哪一种算法
它调用Context参数上的Context来检索将由载波设置的bool资源;即:
com.android.internal.R.bool.config_use_strict_phone_number_comparation请注意,compare(String a, String b)方法自动使用松散方法。
算法有何不同?
两者都相当复杂,但主要的区别是,松散的算法基本上是从右向左进行盲字符比较,只考虑格式上的差异。对于国内电话来说,这通常是足够的。
然而,严格的算法考虑到国际数字的各种分钟规则及其不同的可接受的差异;例如,如来文所述,“在日本,"090-1234-1234 -1234不得等于90-1234-1234”。
这些算法(目前)存在于compareLoosely()和compareStrictly()的PhoneNumberUtils方法中。我没有直接连接到线路号码,因为这是主分支,它们最终肯定会改变的。
本质上,如果你相对确定你只处理国内的数字,宽松的方法可能是好的。如果您要处理国际号码,请使用严格的方法。
https://stackoverflow.com/questions/53446070
复制相似问题