我试图将file
转换为String
,之后我将替换转换后文件的名称而不使用非数字字符但是当我将其替换为文件扩展名时文件也被替换。例如(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(".")))
错误替换为长度?
Edited2:
String[] saDateFiles = fileList.list();
String strDatefiles = Arrays.toString(saDateFiles).substring(0, Arrays.toString(saDateFiles).lastIndexOf(".")).replaceAll("[\\W]","");
System.out.println(strDatefiles);`
输出:20140502txt20140904
(我里面有2个文件)
答案 0 :(得分:1)
我会将indexOf作为.
中的最后一个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);
}
答案 1 :(得分:0)
在"。"之前将替换功能应用于文件名的一部分。您可以使用以下代码提取此部分:
fileName.substring(0, fileName.lastIndexOf(".")) ;
使用:
String strDatefiles = Arrays.toString(saDateFiles.substring(0, saDateFiles.lastIndexOf("."))).replaceAll("[\\W]", "");