私はアンドロイドアプリを開発しています、質問は私をとても混乱させます、私は連絡先Aが1234567の番号を持っているなど、番号の一部だけで連絡先を検索するような機能を実装したいです、私はユーザーが123または345などの場合、相対的な連絡先が一覧表示されますが、androidのデータベース構造を調べると、実装が難しいようです。相対的なデータはテーブルデータのDATA1とDATA4だけで、DATA1はユーザーが入力したものです。彼は連絡先を追加しますが、123-456(123)456や123456などの形式になります。DATA4は正規化された番号ですが、+1などの国コード部分がある場合もあります。正の順序で、+ 1123456や6543211+のように逆の順序になることもあるので、実装するのは非常に難しいと思います。誰かが助けてくれますか。よろしくお願いします。
質問する
127 次
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 に答える