如何在Java排序期间删除前导“the”?

时间:2012-08-29 14:35:26

标签: java android

我有一个Android ListView我想排序。目前我正在使用Collections.sort按字母顺序排列。

但是,我想更进一步,移动领先的“the”。是否有可以处理此问题的内置Java或Android方法?

如果没有,我需要的代码是什么?

1 个答案:

答案 0 :(得分:9)

Collections.sort()与自定义Comparator<String>一起使用,在比较字符串之前删除前导"The"

List<String> foo = /* init */;

Comparator<String> ignoreLeadingThe = new Comparator<String>() {
    @Override public int compare(String a, String b) {
        // TODO check for nulls?

        // (?i) makes the match case-insensitive
        a = a.replaceAll("(?i)^the\\s+", "");
        b = b.replaceAll("(?i)^the\\s+", "");

        // TODO use compareToIgnoreCase() instead?
        return a.compareTo(b);
    }
};

Collections.sort(foo, ignoreLeadingThe);

演示:http://ideone.com/6hogi