4

現在、ファイル名を取り、いくつかの異なる方法 (ロケールに依存する自然な並べ替え、大文字と小文字を区別しない ASCIIbetical 並べ替え、変更日など) で並べ替えるコードがいくつかあります。たとえば、ロケールに依存する自然な並べ替えの場合、これを使用します。

Collections.sort(files, new Comparator<File>() {
    @Override
    public int compare(File f1, File f2) {
        return NaturalComparator.compareNatural(collator, f1.getName(), f2.getName());
    }
});

ファイル名の先頭にある「the」という単語を無視する方法を知りたいので、次のようにファイルを並べ替える代わりに:

アップル
キャロット
ザバナナ

次のように並べます。

アップル
バナナ
ニンジン

4

4 に答える 4

0
static String ignoreThe(String s) {
    if (s.length > 3) {
        if (s.substring(0, 4).toLowerCase().equal("the ")) {
            return s.substring(0, 4);
        }
    }
    return s;
}

Collections.sort(files, new Comparator<File>() {
    @Override
    public int compare(File f1, File f2) {
        String name1 = ignoreThe(f1.getName()); 
        String name1 = ignoreThe(f2.getName()); 
        return name1.compareTo(name2);
    }
});
于 2013-02-07T07:17:11.910 に答える
0

試す

...
return NaturalComparator.compareNatural(collator, f1.getName().replaceAll("^The ", ""), f2.getName().replaceAll("^The ", ""));
于 2013-02-07T07:17:18.230 に答える