2017-07-07 35 views
1

我想刪除文件名的最後三個字符。要重命名的文件,我使用的:提取文件名的正則表達式?

String str = ""; // Here set File name, i.e. listFile.getName(); 
String[] tempFile = str.split("[$^txt]"); 

此正則表達式刪除最後三個字符的是好的,但通過含有「T或X」的任何文件名正則表達式中刪除它時。例如:

1) fileName.txt -> result after split -> fileName -> OK. 
2) textfile.txt -> result after split -> efile. -> remove any t OR x in file name. 

我的Q是:我如何刪除只有最後三個字符。

如果你要刪除的文件的擴展名的正則表達式是多的任務太複雜謝謝

+1

'str.split(「.txt $」);'? –

+3

'[$^txt]'是一個角色類。它讀取'$'_或''''或''t''或者''''或''t'。它會分裂到任何這些角色中。 – sln

+1

我們都假設它是'.txt'文件擴展名。你想刪除一個文件擴展名,或者你真的想刪除最後3個字符嗎?所以如果文件名是'myNameIsBob',你將得到'myNameIs'或者如果文件名是'myNameIsBob.txt',你想要'myNameIsBob'嗎? – jiveturkey

回答

4

。你可以用String.lastIndexOf(int)工作,而不是確定的文件擴展名的位置:

public static String extractFileName(final String fileName) 
{ 
    final int dotIndex = fileName.lastIndexOf('.'); 
    return dotIndex < 0 ? fileName : fileName.substring(0,dotIndex); 
} 
+0

非常感謝。它工作得很好。 – abdulrahmanAbdullah

+0

我沒有看到任何複雜的正則表達式。像'\。([^。] *)$'。我猜如果你不知道任何正則表達式,你看到的正則表達式太複雜了。 – sln

+0

複雜的解決方案的複雜性不符合原始要求的複雜性。啓動一個正則表達式引擎來查找字符串中的一個點就是浪費資源。瞭解正則表達式還意味着何時不使用正則表達式。 –

0

你可以簡單地只使用字符串。 String.substring用於此目的。就你而言,你可以簡單地使用str.substring(0, str.length - 3)來獲取除字符串中最後3個字符以外的所有內容。除此之外,您可以使用str.split