gpt4 book ai didi

java - 删除文件名中的非数字字符(java 中扩展名除外)

转载 作者:行者123 更新时间:2023-11-30 06:48:29 25 4
gpt4 key购买 nike

我正在尝试将文件转换为字符串,之后我将替换转换后的文件的名称,不带非数字字符,但是当我替换它时文件的文件扩展名也被替换。例如(2014.05-06.txt -> 20140506.txt但发生的是20140506txt)我想保留 .txt、.log 或任何类型的扩展名。

String strDatefiles = Arrays.toString(saDateFiles).replaceAll("[\\W]", "");

已编辑:

String[] saDateFiles = fileList.list();
String strDatefiles = Arrays.toString(saDateFiles.substring(0, saDateFiles.lastIndexOf("."))).replaceAll("[\\W]", "");

saDateFiles.lastIndexOf("."))) 替换为长度时出错?

编辑2:

String[] saDateFiles = fileList.list();
String strDatefiles = Arrays.toString(saDateFiles).substring(0, Arrays.toString(saDateFiles).lastIndexOf(".")).replaceAll("[\\W]","");
System.out.println(strDatefiles);`

输出:20140502txt20140904(我里面有2个文件)

最佳答案

我将获取String中最后一个.的索引,然后操作两个子字符串。例如,

String saDateFiles = "2014.05-06.txt";
int lastDot = saDateFiles.lastIndexOf('.');
String strDatefiles = saDateFiles.substring(0, lastDot).replaceAll("\\D", "")
.concat(saDateFiles.substring(lastDot));
System.out.println(strDatefiles);

输出(根据要求)

20140506.txt

正如您所注意到的,以上是针对一个文件名的。要对文件名数组执行此操作,您可以使用 for-each 循环和上面的代码,例如

String[] saDateFilesArr = fileList.list();
for (String saDateFiles : saDateFilesArr) {
int lastDot = saDateFiles.lastIndexOf('.');
String strDatefiles = saDateFiles.substring(0, lastDot)
.replaceAll("\\D", "").concat(saDateFiles.substring(lastDot));
System.out.println(strDatefiles);
}

关于java - 删除文件名中的非数字字符(java 中扩展名除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268048/

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