如果有任何意义,我需要修剪文件名以仅获取有意义的名称。例如,我有这个文件: myFileName_XYZ_2901_20.dat我只想提取它的名称:myFileName_XYZ。我现在有这个: String word = myFileName.replaceAll("([^_.*\0-9 ])", "");但是当我调试时它给了我:__201901_20.我该如何解决?谢谢
3 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
这将删除带有数字和下划线但不包含扩展名的最后部分
String word = myFileName.replaceAll("(_\\d+_\\d+)", "");
结果
我的文件名_XYZ.dat
人到中年有点甜
TA贡献1895条经验 获得超7个赞
您不需要为此使用正则表达式;只需要_
在第二个字符之前的所有内容String
:
String word = myFileName.substring(0, myFileName.indexOf('_', myFileName.indexOf('_') + 1));
输出:
myFileName_XYZ
请注意,这假定两者均myFileName
不XYZ
包含任何_
字符。
拉丁的传说
TA贡献1789条经验 获得超8个赞
模式可能是您最终需要的,但如果您打算删除的模式最终成为您想要保留的文件名部分的一部分,您将获得意想不到的结果。
如果末尾总是相同的模式 – _XXXX_YY.dat– 您可以从末尾删除固定长度的 12 个字符。这将打印“myFileName_XYZ”:
String s = "myFileName_XYZ_2901_20.dat";
int length = s.length() - 12;
System.out.println(s.substring(0, length));
添加回答
举报
0/150
提交
取消