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

(实际上,两只猫(猫或猫)中的哪只先来并不重要,只要它们彼此相邻排序即可)。

有没有一种简单的方法来解决这个问题?我认为解决方案将涉及从字符串中提取字母数字字符,然后比较它们,然后将它们返回到以前的状态,并再次包含非字母数字字符。

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 回答