我想你不想要简单的字典顺序(解决方案很明显)。
首先,删除“.java”部分并将字符串拆分为字符“_”。
int dotIndex = string.indexOf(".");
String []parts = split.substring(0, dotIndex).split("_");
您对部分[1] 和部分[2] 感兴趣。第一个很简单,只是一个数字。
int fileNumber = Integer.parseInt(parts[1]);
第二个总是采用“VX”的形式,其中 X 是一个数字。但是这部分可能不存在(如果它是文件的基本版本)。在这种情况下,我们可以说版本为 0。
int versionNumber = parts.length < 2 ? 0 : Integer.parseInt(parts[2].substring(1));
现在您可以根据这两个数字进行比较。
为简单起见,基于此构建一个 FileIdentifier 类:
class FileIdentifier {
int fileNumber;
int versionNumber;
}
然后是一个从文件名创建 FileIdentifier 的函数,其逻辑基于我之前解释的内容。
FileIdentifier getFileIdentifierFromFileName(String filename){ /* .... */ }
然后在 String 上创建一个比较器,在其中获取两个字符串的 FileIdentifier 并在 FileIdentifier 成员上进行比较。
然后,要获得具有“最高值”的字符串,只需将所有字符串放在一个列表中,然后使用Collections.sort
,提供比较器。