0

我正在开发一个android应用程序,一个问题让我很困惑,我想实现一个功能,比如通过部分号码搜索联系人,比如联系人A的号码为1234567,我希望用户只需输入123或345等然后相关联系人会列出来;但是当我研究android的数据库结构时,似乎很难实现,唯一的相关数据只是表数据中的DATA1和DATA4,DATA1就是用户输入的时候他添加了联系人;但它会有一些格式,例如 123-456 (123)456 或 123 456 等。DATA4 是标准化数字,但有时会包含国家代码部分,例如 +1 等。有时是正序,有时是反序,比如+1123456或者6543211+,所以我觉得很难实现,谁能帮帮我!先谢谢了!

4

1 回答 1

2

第一种方法——

将用户输入值(例如 345)传递给函数

public String getPreparedInput(String input) {

    if(input==null || input.trim().length()==0) return "";

    StringBuilder sb = new StringBuilder("%");
    char[] chars = input.trim().toCharArray();
    for(char ch : chars) {
        sb.append(ch);
        sb.append("%");
    }
    return sb.toString();
}

接下来,在内容解析器的 where 子句中使用函数的输出(即 %3%4%5%)

String where = "phone_number like '" + getPreparedInput(input) + "'";

第二种方法-

在 where 子句中对字符串使用 SQLite replace() 函数

String where = "replace(replace(replace(replace(replace(phone_number,'+',''),'-',''),'(',''),')',''),' ','') like '%" + input + " %'";

于 2013-03-01T03:42:46.470 回答