如果有任何意义,我需要修剪文件名以仅获取含义中的名称。例如,我有这个文件:
-r
,我只想提取它的名称:myFileName_XYZ_2901_20.dat
。
我现在有这个:
myFileName_XYZ
但是当我调试它时,它会给我: String word = myFileName.replaceAll("([^_.*\0-9 ])", "");
我该如何解决? 谢谢
答案 0 :(得分:1)
您不需要为此使用正则表达式;只需将_
中第二个String
字符之前的内容全部取出:
String word = myFileName.substring(0,
myFileName.indexOf('_', myFileName.indexOf('_') + 1));
输出:
myFileName_XYZ
请注意,这假设myFileName
和XYZ
都不包含任何_
个字符。
答案 1 :(得分:1)
模式最终可能是您需要的,但是如果您打算删除的模式最终成为您要保留的文件名部分的一部分,那么您将遇到意外情况结果。
如果结尾始终是相同的模式– _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));
答案 2 :(得分:1)
这将删除带有数字和下划线但不包括扩展名的最后一部分
String word = myFileName.replaceAll("(_\\d+_\\d+)", "");
结果
myFileName_XYZ.dat