3

AndroidのListViewオブジェクトを並べ替えようとしています。私は現在、次のコードを使用しています。

  // Sort terms alphabetically, ignoring case
  adapter.sort(new Comparator<String>() {
        public int compare(String object1, String object2) {
            return object1.compareToIgnoreCase(object2);
        };

これは私のリストをソートし、ケースを無視します。ただし、句読点も無視するとよいでしょう。例えば:

c.a.t.
car
cat

次のように並べ替える必要があります。

car
c.a.t.
cat

(2匹の猫(猫または猫)のどちらが最初に来るかは、実際には、隣り合って並べ替えられている限り、関係ありません)。

これを回避する簡単な方法はありますか?解決策は、文字列から英数字だけを抽出し、それらを比較して、英数字以外の文字を再び含めて元の状態に戻すことであると思います。

4

2 に答える 2

4

比較するときは、気にしない文字を削除してください

public int compare(String str1, String str2) {
    String remove = "[\\.:',]"; // change this to all to characters to remoce
    return str1.replaceAll(remove, "").compareToIgnoreCase(object2.replaceAll(remove, ""));
};
于 2012-09-12T21:43:24.097 に答える
3

これはそれを行う必要があります:

return object1.replace(".", "").compareToIgnoreCase(object2.replace(".", ""));

もっと簡単な方法はないと思います。

于 2012-09-12T21:43:07.280 に答える