2015-04-03 121 views
2

我試圖從包含文件名或目錄的字符串中提取子字符串。被提取的子字符串應該是文件擴展名。我在網上做了一些搜索,發現我可以使用正則表達式來實現這一點。我發現^\.[\w]+$是一種可以查找文件擴展名的模式。問題是我不完全熟悉正則表達式及其函數。如何使用正則表達式來獲取文件擴展名?

基本上,如果我有一個字符串像C:\Desktop\myFile.txt我想正則表達式然後查找並創建只包含.txt

+0

對於您:http://www.regular-expressions.info/(一個偉大的資源,有許多語言無關和語言特定的幫助。) – BlackVegetable 2015-04-03 16:35:55

回答

3

您可以使用String class split()函數。在這裏你可以傳遞一個正則表達式。在這種情況下,它會是「\」。這將分成兩部分的字符串,第二部分將給你的文件擴展名。

public class Sample{ 
    public static void main(String arg[]){ 
    String filename= "c:\\abc.txt"; 

    String fileArray[]=filename.split("\\."); 

    System.out.println(fileArray[fileArray.length-1]); //Will print the file extension 
    } 
} 
+0

謝謝。我最終做了類似的事情。 – user3657834 2015-04-03 17:06:06

+0

我很高興能幫到你! – Touchstone 2015-04-03 17:10:44

8

正則表達式來捕獲文件的擴展名一個新的字符串是:

(\\.[^.]+)$ 

注意點需求以逃避匹配一個字面點。然而[^.]是一個帶有否定的字符類,它不需要任何轉義,因爲dot[]的字面上處理。

\\.  # match a literal dot 
[^.]+  # match 1 or more of any character but dot 
(\\.[^.]+) # capture above test in group #1 
$   # anchor to match end of input 
2

如果你不想使用正則表達式,你可以像這樣的東西去:

String fileString = "..." //this is your String representing the File 
int lastDot = fileString.lastIndexOf('.'); 
String extension = fileString.subString(lastDot+1); 
相關問題