gpt4 book ai didi

java - 重命名文件以按特定顺序按字母顺序排列它们?

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:07 24 4
gpt4 key购买 nike

我的问题归结为:我需要按特定顺序对文件进行排序(文件开头有数字)。后来我想将它们存储在外部,然后文件按它们所在的系统的字母顺序排序,我对该过程没有影响。那么我怎样才能重命名它们以使它们保持正确的顺序呢?

// this comparator sorts them by alphabetical order 
Comparator<Mp3File> compAlphabetical = (x,y) -> getMp3TitleFromFilename(x).compareTo(getMp3TitleFromFilename(y));

//and this one does by number
//the inputs look like this "582 Some File Name" so they have to be edited with some regex before using them for sorting
Comparator<Mp3File> compNumeric = new Comparator<Mp3File>() {

@Override
public int compare(Mp3File o1, Mp3File o2) {
Integer i1 = Integer.parseInt(getMp3TitleFromFilename(o1).substring(0,3).replaceAll("[^0-9]", ""));
Integer i2 = Integer.parseInt(getMp3TitleFromFilename(o2).substring(0,3).replaceAll("[^0-9]", ""));
return i1.compareTo(i2);
}
};

我想要实现的是一种方法,它使用正确的排序(第二个)比较器获取列表并重命名文件,以便它们保持其顺序,即使我会运行列表上的第一个比较器。

现在按字母表排序会给出部分正确的顺序。它看起来像这样:

  • 1 一个文件名
  • 10另一个文件名
  • 100 个好文件名
  • 101 更好的文件名
  • 102 另一个文件
  • 103 一个非常好的文件名

但这并不是我真正想要的,所以我考虑在开头添加一些字母,如下所示:

  • AAA 一个文件
  • AAB 另一个文件
  • AAC 和
  • AAD所以
  • AAE 开启

但我不知道如何正确地将这些数字转换为字符以及如何使其在 Java 中工作。也许你们中有人能告诉我如何解决这个问题?提前致谢!

最佳答案

因此,您的代码当前正在对 lexicographical order 中的字符串进行排序。 ,这基本上意味着语言将变量视为字符串并对它们进行排序,将字符串每个位置的每个字符与另一个字符串对应的字符及其对应位置进行比较(例如“2”大于“1999999”,因为“2”大于“1”)。

如果您曾经查看过包含节目剧集(例如 S3E08)的文件夹,您可能已经见过这个问题及其解决方案。您会注意到他们在剧集编号前添加了“0”,这样字典排序就不会打乱我们期望的正确字母顺序。

这就是我建议您所做的,我将在下面提供一个文件名的示例:

  • 001 一个文件名
  • 010另一个文件名
  • 100 个好文件名
  • 101 更好的文件名
  • 102 另一个文件
  • 103 一个非常好的文件名

执行此操作的算法相当简单,所以我将其留给您!如果您对实现有任何疑问,请随时回复

关于java - 重命名文件以按特定顺序按字母顺序排列它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57944448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com