给定一个字符串=“ test20190906.pdf”,我怎样才能只获得“ test.pdf”,以便它通过使用string.replace或remove从字符串中删除日期?
考虑到格式将始终为文件名+日期+。扩展名。
Nic*_*s K 10
您可以使用正则表达式删除任何格式的类似于日期的连续数字,只要文件名紧随日期之后即可。
"test20190906.pdf".replaceAll("[0-9]{8}\\.", "."));
Run Code Online (Sandbox Code Playgroud)
我看到以前的答案,并且如果文件名中包含其他数字,则该答案将不起作用: 01_test20190913.pdf
在这种情况下,解决方案将是
String file = "01_test20190913.pdf";
System.out.println(file.substring(0, file.length() - 12)+".pdf");
Run Code Online (Sandbox Code Playgroud)
在这里,我将字符串的第一部分(不包含最后12个字符)并添加“ .pdf”
有很多好的答案,但我想再介绍一个。如果文件名不仅在日期部分包含数字,它也会起作用。我假设日期总是出现在扩展之前并且具有固定长度。
s.replaceAll("\\d{8}\\.pdf", ".pdf");
Run Code Online (Sandbox Code Playgroud)
如果文件扩展名不同,那么您可以做一些额外的工作:
public static String removeDate(String s) {
final String extension = s.substring(s.lastIndexOf("."));
final String pattern = "\\d{8}\\" + extension;
return s.replaceAll(pattern, extension);
}
public static void main(String args[])
{
System.out.println(removeDate("test20190101.pdf"));
System.out.println(removeDate("123123test20190101.txt"));
System.out.println(removeDate("123te11st20190101.csv"));
}
Run Code Online (Sandbox Code Playgroud)
这只能使用正则表达式来完成,但代价是可读性。
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |