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

标签 java string substring

我有一个文件,当 Java FileReader 读取时,它会打印(println)一堆格式如下的文件目录:

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

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

我相信我必须使用正则表达式才能实现这一目标,但曙光还没有降临到我身上。

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

任何帮助将不胜感激!非常感谢!

最佳答案

欢迎来到 stackoverflow!

您当然可以使用 RegEx,但在这种情况下,您最好使用字符串函数,因为对于像这样简单的事情,它们比 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(换行)等...因此要使用在搜索函数中反斜杠本身,你必须转义它。

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

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

 z:/directory4/file.mpg;xxxxx

关于java - 选择句子中的特定单词或短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600087/

相关文章:

java - tomee 不会从 eclipse 中启动

c++ - 将符号插入字符串 C++

javascript - 检查字符串是否包含另一个字符串的 3 个字符长的子字符串

python - 要在 Python 中列出的字符串

string - 如何使用批处理查看字符串是否包含子字符串

variables - 批处理脚本帮助 - 将 DelayedExpansion Var 的子字符串替换为另一个 DelayedExpansion Var

java - Java项目中所有类的单元测试可序列化性

Java DatePicker 弹出日历

java - 如何在使用 gradle 的 "compile project"时排除目录?

java - 只有最后一个子字符串在 java for 循环中被测试