如果有任何意義,我需要修剪文件名以僅獲取有意義的名稱。例如,我有這個文件: myFileName_XYZ_2901_20.dat我只想提取它的名稱:myFileName_XYZ。我現(xiàn)在有這個: String word = myFileName.replaceAll("([^_.*\0-9 ])", "");但是當我調(diào)試時它給了我:__201901_20.我該如何解決?謝謝
3 回答

泛舟湖上清波郎朗
TA貢獻1818條經(jīng)驗 獲得超3個贊
這將刪除帶有數(shù)字和下劃線但不包含擴展名的最后部分
String word = myFileName.replaceAll("(_\\d+_\\d+)", "");
結(jié)果
我的文件名_XYZ.dat

人到中年有點甜
TA貢獻1895條經(jīng)驗 獲得超7個贊
您不需要為此使用正則表達式;只需要_
在第二個字符之前的所有內(nèi)容String
:
String word = myFileName.substring(0, myFileName.indexOf('_', myFileName.indexOf('_') + 1));
輸出:
myFileName_XYZ
請注意,這假定兩者均myFileName
不XYZ
包含任何_
字符。

拉丁的傳說
TA貢獻1789條經(jīng)驗 獲得超8個贊
模式可能是您最終需要的,但如果您打算刪除的模式最終成為您想要保留的文件名部分的一部分,您將獲得意想不到的結(jié)果。
如果末尾總是相同的模式 – _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
提交
取消