我有一个Android ListView
我想排序。目前我正在使用Collections.sort
按字母顺序排列。
但是,我想更进一步,移动领先的“the”。是否有可以处理此问题的内置Java或Android方法?
如果没有,我需要的代码是什么?
答案 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);