Java 在句子中选择特定的单词或短语
我有一个文件,当Java FileReader读取时,它会打印(println)一组文件目录,其格式如下: Z:\123456_tre\12345.mpg;0;2343;3423;43234 我需要找到一种方法,以便自动获取文件名(12345.mpg),该文件名位于该行第二个反斜杠“\”和第一个分号“之间 我相信我必须使用正则表达式来实现这一点,但我还没有意识到这一点 我想用一个计数器变量来计算所有的斜杠。当计数器==2时,获取以下字符串,直到它到达分号,然后停止。然后返回读取的字符串 任何帮助都将不胜感激!多谢各位 这可能有用:Java 在句子中选择特定的单词或短语,java,string,substring,Java,String,Substring,我有一个文件,当Java FileReader读取时,它会打印(println)一组文件目录,其格式如下: Z:\123456_tre\12345.mpg;0;2343;3423;43234 我需要找到一种方法,以便自动获取文件名(12345.mpg),该文件名位于该行第二个反斜杠“\”和第一个分号“之间 我相信我必须使用正则表达式来实现这一点,但我还没有意识到这一点 我想用一个计数器变量来计算所有的斜杠。当计数器==2时,获取以下字符串,直到它到达分号,然后停止。然后返回读取的字符串 任何帮助
只需调整到解决方案的第一个斜杠和分号即可 欢迎来到stackoverflow 当然,您可以使用正则表达式,但是在这种情况下,您最好使用字符串函数,因为对于像这样简单的事情,它们比正则表达式快得多 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
或
试试这个
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()));
尝试使用
String.split()
你当然可以这样做,但正则表达式将是一个更干净的解决方案。谢谢!我又在复习regex干酪单了!哈哈,如果你不去想它,它会让你很困惑:)这太棒了!!我有.lastIndexOf来确定“\”的最后一次出现,但不知道之后该怎么办。谢谢你多跑了一英里,并用双反斜杠分享了一些信息。我希望我能投赞成票,但我现在还不能1.别担心,被接受的答案就足够了。很乐意帮忙!
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()));
String input = "Z:\\123456_tre\\12345.mpg;0;2343;3423;43234";
String output = input.split(";")[0].split("\\")[2];