在Java中从字符串中提取子字符串
我有很多文件,它们都叫做在Java中从字符串中提取子字符串,java,substring,Java,Substring,我有很多文件,它们都叫做name\u version\u xyz.ext 在我的Java代码中,我需要提取文件名的名称和版本部分。我可以使用lastIndexOf查找下划线来实现这一点,但我认为这不是最好的解决方案。这可以用regexp实现吗 请注意,“name”部分可以包含任意数量的下划线。您可以使用Regex,但我认为在这种情况下有点过分了。所以我个人会坚持你目前的解决方案 它正在工作,不太复杂,这就是为什么我不认为有任何理由切换到另一种方法。是的,作为Java字符串的regexp看起来就像
name\u version\u xyz.ext
在我的Java代码中,我需要提取文件名的名称和版本部分。我可以使用lastIndexOf
查找下划线来实现这一点,但我认为这不是最好的解决方案。这可以用regexp实现吗
请注意,“name”部分可以包含任意数量的下划线。您可以使用Regex,但我认为在这种情况下有点过分了。所以我个人会坚持你目前的解决方案
它正在工作,不太复杂,这就是为什么我不认为有任何理由切换到另一种方法。是的,作为Java字符串的regexp看起来就像(未测试)
“name”是组(1),“version”是组(2),xyz是组(3),ext是组(4)。如果保证将文件的最后一部分命名为_xyz.ext,那么这确实是最干净的方法。(如果你不能保证这一点,那么你当然需要想出其他办法。) 正如正则表达式所说: 如果您用正则表达式解决了一个问题,那么您现在有两个问题
使用字符串标记器: 或者,String.split()
如果您不想使用正则表达式,我认为最简单的解决方案是检索文件,只获取不带扩展名的部分,然后:
String file = "blah_blah_version_123";
String[] tmp = file.split("_version_");
System.out.println("name = " + tmp[0]);
System.out.println("version = " + tmp[1]);
输出:
name = blah_blah
version = 123
name = blah_blah
version = 123