我正在尝试从包含文件名或目录的字符串中提取子字符串。提取的子字符串应该是文件扩展名。我在网上做了一些搜索,发现我可以使用正则表达式来实现这一点。我发现^\.[\w]+$
是一种可以查找文件扩展名的模式。问题是我对正则表达式及其功能并不完全熟悉。
基本上如果我有一个像C:\Desktop\myFile.txt
这样的字符串,我希望正则表达式找到并创建一个只包含.txt
的新字符串
答案 0 :(得分:13)
捕获文件扩展名的正则表达式是:
(\\.[^.]+)$
请注意,点需要转义以匹配文字点。但是[^.]
是一个带有否定的字符类,因为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
处理,所以不需要任何转义。
{{1}}
答案 1 :(得分:4)
您可以使用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
}
}
答案 2 :(得分:2)
如果您不想使用RegEx,可以使用以下内容:
String fileString = "..." //this is your String representing the File
int lastDot = fileString.lastIndexOf('.');
String extension = fileString.subString(lastDot+1);