0

私はアンドロイドアプリを開発しています、質問は私をとても混乱させます、私は連絡先Aが1234567の番号を持っているなど、番号の一部だけで連絡先を検索するような機能を実装したいです、私はユーザーが123または345などの場合、相対的な連絡先が一覧表示されますが、androidのデータベース構造を調べると、実装が難しいようです。相対的なデータはテーブルデータのDATA1とDATA4だけで、DATA1はユーザーが入力したものです。彼は連絡先を追加しますが、123-456(123)456や123456などの形式になります。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) + "'";

2番目のアプローチ-

where句の文字列にSQLite replace()関数を使用する

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

于 2013-03-01T03:42:46.470 に答える