2015-04-03 120 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); 
相关问题