删除字符串的尾随字符

如果有任何意义,我需要修剪文件名以仅获取有意义的名称。例如,我有这个文件: myFileName_XYZ_2901_20.dat我只想提取它的名称:myFileName_XYZ。我现在有这个:

    String word = myFileName.replaceAll("([^_.*\0-9 ])", "");

但是当我调试时它给了我:__201901_20.

我该如何解决?谢谢


慕妹3242003
浏览 87回答 3
3回答

泛舟湖上清波郎朗

这将删除带有数字和下划线但不包含扩展名的最后部分String word = myFileName.replaceAll("(_\\d+_\\d+)", "");结果我的文件名_XYZ.dat

人到中年有点甜

您不需要为此使用正则表达式;只需要_在第二个字符之前的所有内容String:String word = myFileName.substring(0,      myFileName.indexOf('_', myFileName.indexOf('_') + 1));输出:myFileName_XYZ请注意,这假定两者均myFileName不XYZ包含任何_字符。

拉丁的传说

模式可能是您最终需要的,但如果您打算删除的模式最终成为您想要保留的文件名部分的一部分,您将获得意想不到的结果。如果末尾总是相同的模式 –  _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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java