拥有包含以下文件的文件夹
myoutput.pdf
hello.pdf.pdf
byebye.txt
hey.txt.txt
如何删除仅具有重复扩展名的文件的扩展名?在示例中,只有pdf和txt,但在实际示例中可以是任何类型的扩展。
我到目前为止:
String dir = "C:/Users/test";
File[] files = new File(dir).listFiles();
for (File file : files) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
但我不知道我现在怎么能检测出那些带有重复扩展名的"并将其重命名为"单个扩展名"
我想要的输出是:
myoutput.pdf
hello.pdf
byebye.txt
hey.txt
提前致谢。
答案 0 :(得分:2)
您可以使用
file.getName().replaceAll("(\\.\\w+)\\1+$", "$1")
请参阅regex demo
模式详情:
(\\.\\w+)
- 第1组捕获一个点和一个或多个字符(\\w+
可能会替换为[^.]+
以匹配除点之外的1个或多个字符)\\1+
- 在第1组中捕获的相同值的一次或多次出现$
- 字符串结束。替换模式只是对第1组($1
)的反向引用,只有1次出现扩展。
答案 1 :(得分:0)
您可以按以下方式替换代码:
if (file.isFile()) {
String newFileName = file.getName().replaceAll("(\\.\\w+)\\1+$", "$1");
file.renameTo(new File(file.getParent() + "/" +newFileName));
}