java - 忽略标点符号的排序 (Java)

标签 java sorting compareto

我正在尝试对 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

(两只猫(cat 或 c.a.t.)中的哪一只排在第一位实际上并不重要,只要它们排在彼此旁边即可)。

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

最佳答案

比较时,去掉不关心的字符

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, ""));
};

关于java - 忽略标点符号的排序 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396540/

相关文章:

c - 将数组分成两部分,对每个部分进行排序,然后重新组合成单​​个数组

java - 修改Android中的compareTo

java - 无法在基本类型 double 上调用 compareTo(double)

Java GSON - 从 json 字符串创建数组

java - 在jframe上动态切换图像

java - 适用于 PC 和平板电脑的浏览器游戏 - 依赖哪个插件?

java - JPA 和 DTO,创建 DTO 的最佳方式?

python - 如何检查字符串日期格式是否可排序?

architecture - RESTful API 排序困境

java - 如何对不同类类型的对象数组进行排序?