java - 删除 Java 上重复的扩展文件

标签 java string file-io

有一个包含以下文件的文件夹

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

提前致谢。

最佳答案

您可以使用

file.getName().replaceAll("(\\.\\w+)\\1+$", "$1")

请参阅regex demo

图案详细信息:

  • (\\.\\w+) - 第 1 组捕获一个点和 1 个或多个单词字符(\\w+ 可能会替换为 [^ .]+ 匹配除点之外的 1 个或多个字符)
  • \\1+ - 第 1 组中捕获的一个或多个相同值
  • $ - 字符串结尾。

替换模式只是对组 1 ($1) 的反向引用,仅出现 1 次扩展名。

关于java - 删除 Java 上重复的扩展文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485375/

相关文章:

java - LibGDX GLSL 应用于后台

java - JScrollPane 总是清除我的面板

c++ - 运算符是什么!!在字符串上做 C++

c++ - 使用 C++ 从 txt 加载 float/double 矩阵

c++ - 从文件访问数据

java - jmeter 无法运行!无法找到 Java 可执行文件或版本。请检查您的 Java 安装”

java - 在 tomcat 中屏蔽 WAR 文件和端口

silverlight - 在 XAML 中的一个 TextBlock 中格式化多个绑定(bind)字段

java - 字符串操作 : Spliting Delimitted Data

c - 使用 `posix_fallocate` 创建的修剪文件