Sub*_*unk 4 java sorting collections
目前我有一些代码采用文件名并以不同的方式对它们进行排序(区域设置敏感的自然排序,不区分大小写的ASCII排序,修改日期等),例如,对于区域设置敏感的自然排序,它使用以下方法:
Collections.sort(files, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return NaturalComparator.compareNatural(collator, f1.getName(), f2.getName());
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道如何让它忽略文件名开头的"the"这个词,所以不要像这样排序文件:
苹果
胡萝卜
香蕉
它命令他们这样:
苹果
香蕉
胡萝卜
您可以The
在将其传递给比较器,使用String#replaceFirst(regex, replacement)
或String.replaceAll(regex, replacement)
方法之前替换第一个匹配项,两者都使用regex
as参数替换,这两个都可以在这里使用: -
@Override
public int compare(File f1, File f2) {
return NaturalComparator.compareNatural(collator,
f1.getName().replaceAll("^(?i)The ", ""),
f2.getName().replaceAll("^(?i)The ", ""));
}
Run Code Online (Sandbox Code Playgroud)
(?i)
在regex pattern
做一个 不区分大小写的 替换之前添加了一个标志(感谢@Chris指出这个).
Caret (^)
在模式之前添加,以便它仅替换The
字符串开头的.所以,The banana
将被替换banana
,但Banana, The
不会被替换Banana,
.它将保持不变.
归档时间: |
|
查看次数: |
783 次 |
最近记录: |