选择句子中的特定单词或短语

时间:2014-03-24 02:27:53

标签: java string substring

我有一个文件,当由Java FileReader读取时,打印(println)一堆文件目录,格式为:

Z:\ 123456_tre \ 12345.mpg; 0; 2343; 3423; 43234

我需要找到一种方法,以便我可以自动获取文件名 12345.mpg ),它位于第二个反斜杠“之间“第一个半冒号”; 在该行

我相信我必须使用正则表达式来实现这一点,但光还没有发现。

我正在考虑使用计数器变量来计算所有斜杠。当counter == 2时,取下面的字符串直到它达到分号然后停止。然后返回读取的字符串。

任何帮助都将得到充分的赞赏!非常感谢你!

4 个答案:

答案 0 :(得分:1)

欢迎来到stackoverflow!

你当然可以使用RegEx'es,但在这种情况下,你最好使用String函数,因为它们比RegEx快得多,就像这样简单。

Java提供了一个方便的函数: String.lastIndexOf ,它将搜索字符的最后一次出现,所以:

  String stuff="Z:\\123456_tre\\12345.mpg;0;2343;3423;43234";
  getFilename(stuff); // will get the filename

  public String  getFilename(String fullFilename) {
       String filename=fullFilename.substring(fullFilename.lastIndexOf("\\")+1); // this will get  12345.mpg;0;2343;3423;43234
       return filename.substring(0,filename.indexOf(";"));
   }

为什么双反斜杠? (\\)

在Java和大多数编程语言中,反斜杠是一个“转义字符”,用于特殊事物,如\ n(新行),\ r \ n(换行符)等...所以要使用在搜索功能中反斜杠本身,你必须逃避它。

这也是拆分解决方案的首选,因为您不知道文件名的深度。该解决方案适用于

 z:/directory/directory2/directory4/file.mpg;xxxxx

 z:/directory4/file.mpg;xxxxx

答案 1 :(得分:0)

这可能很有用:

Regex to find text between second and third slashes

只需调整为您的解决方案的第一个斜杠和分号。

答案 2 :(得分:0)

试试这个,

        String name = "Z:\\123456_tre\\12345.mpg;0;2343;3423;43234";
        int end = name.indexOf(";");
        String extracted = name.substring(0, end);
        System.out.println(extracted.substring(extracted.lastIndexOf("\\") + 1, extracted.length()));

答案 3 :(得分:0)

尝试String.split()

String input  = "Z:\\123456_tre\\12345.mpg;0;2343;3423;43234";
String output = input.split(";")[0].split("\\")[2];