gpt4 book ai didi

java - 使用内容解析器查询从联系人中获取号码 - 特殊情况

转载 作者:行者123 更新时间:2023-11-30 04:26:49 24 4
gpt4 key购买 nike

我正在尝试查询存储在 android 联系人数据库中的电话号码。

我提供了一个用于比较的输入字符串,我需要查询仅选择与该输入字符串匹配的那些行。

在查询联系人数据库时,我希望查询忽略数字中包含的所有特殊字符,并将输入字符串与字段中包含的数字进行比较。

例如;如果存储的号码是 (944) 6-129-337 ,查询应该将输入字符串与 9446129337 而不是 (944) 6-129-337 进行比较。

以下是我查询数据库并获取数字的代码。

            contactCursor = getContentResolver().query(uri, projection,
ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND " +
ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE ? ",new String[] { input_string }, null);

我在这里遇到的问题是,它只是在每个电话号码字段中进行简单搜索,而没有在内部删除(使用正则表达式或修改查询?)特殊字符。

我不知道如何清理查询中的特殊字符。在这方面任何有助于我解决此查询问题的帮助将不胜感激

谢谢,阿尼斯

最佳答案

作为一种可能对您有用的 hack...您可以在每个数字之间使用通配符传递您的号码,然后在您的 Java 代码中重新过滤结果...例如... LIKE '%9%4%4%6%1%2%9%3%3%7%' ... 可能会返回很少的结果,包括 ( 944) 6-129-337 和(也许)+1 (944) 612-9337;但是你可以收集这些结果,去掉你自己代码中的非数字值,然后进行比较。但是,如果您的搜索字符串非常短,则“误报”命中的数量会大得多。不幸的是,我还没有用 Android 内容系统测试过这个,所以你可能会溢出允许的通配符数量,或者类似的:-(

关于java - 使用内容解析器查询从联系人中获取号码 - 特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com