2015-04-03 5 views
2

Я пытаюсь извлечь подстроку из строки, которая содержит имя файла или каталог. Выделенная подстрока должна быть расширением файла. Я сделал поиск в Интернете и обнаружил, что могу использовать регулярные выражения для этого. Я обнаружил, что ^\.[\w]+$ - это шаблон, который будет работать для поиска расширений файлов. Проблема в том, что я не полностью знаком с регулярными выражениями и его функциями.Как использовать регулярное выражение для получения расширения файла?

В принципе если у меня есть строка, как C:\Desktop\myFile.txt я хочу регулярное выражение, то найти и создать новую строку, содержащую только .txt

+0

Для вас: http://www.regular-expressions.info/ (большой ресурс, который обладает многими языковыми и языковыми пособиями.) – BlackVegetable

ответ

3

Вы можете использовать функцию split() класса String. Здесь вы можете передать регулярное выражение. В этом случае это будет «\.». Это разделит строку на две части, вторая часть даст вам расширение файла.

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

+0

Я рад, что смогу помочь! – Touchstone

8

Regex захватить расширение файла:

(\\.[^.]+)$ 

Обратите внимание, что точка потребности чтобы ускользнуть в соответствии с буквальной точкой. Однако [^.] - класс символов с отрицанием, который не требует какого-либо выхода, поскольку 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

Если вы не хотите использовать RegEx вы можете пойти с чем-то вроде этого:

String fileString = "..." //this is your String representing the File 
int lastDot = fileString.lastIndexOf('.'); 
String extension = fileString.subString(lastDot+1); 
Смежные вопросы