我試圖從包含文件名或目錄的字符串中提取子字符串。被提取的子字符串應該是文件擴展名。我在網上做了一些搜索,發現我可以使用正則表達式來實現這一點。我發現^\.[\w]+$
是一種可以查找文件擴展名的模式。問題是我不完全熟悉正則表達式及其函數。如何使用正則表達式來獲取文件擴展名?
基本上,如果我有一個字符串像C:\Desktop\myFile.txt
我想正則表達式然後查找並創建只包含.txt
我試圖從包含文件名或目錄的字符串中提取子字符串。被提取的子字符串應該是文件擴展名。我在網上做了一些搜索,發現我可以使用正則表達式來實現這一點。我發現^\.[\w]+$
是一種可以查找文件擴展名的模式。問題是我不完全熟悉正則表達式及其函數。如何使用正則表達式來獲取文件擴展名?
基本上,如果我有一個字符串像C:\Desktop\myFile.txt
我想正則表達式然後查找並創建只包含.txt
您可以使用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
}
}
謝謝。我最終做了類似的事情。 – user3657834 2015-04-03 17:06:06
我很高興能幫到你! – Touchstone 2015-04-03 17:10:44
正則表達式來捕獲文件的擴展名一個新的字符串是:
(\\.[^.]+)$
注意點需求以逃避匹配一個字面點。然而[^.]
是一個帶有否定的字符類,它不需要任何轉義,因爲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
如果你不想使用正則表達式,你可以像這樣的東西去:
String fileString = "..." //this is your String representing the File
int lastDot = fileString.lastIndexOf('.');
String extension = fileString.subString(lastDot+1);
對於您:http://www.regular-expressions.info/(一個偉大的資源,有許多語言無關和語言特定的幫助。) – BlackVegetable 2015-04-03 16:35:55