我试图从包含文件名或目录的字符串中提取子字符串。被提取的子字符串应该是文件扩展名。我在网上做了一些搜索,发现我可以使用正则表达式来实现这一点。我发现^\.[\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