我有很多文件,它们都被称为name_version_xyz.ext
。
在我的Java代码中,我需要提取文件名的名称和版本部分。我可以使用lastIndexOf
来寻找下划线,但我不认为这是最好的解决方案。这可以用regexp以某种方式完成吗?
请注意,“name”部分可以包含任意数量的下划线。
答案 0 :(得分:2)
如果您确保将文件的最后一部分命名为_xyz.ext,那么这实际上是最干净的方法。 (如果不能保证这一点,那么,当然,你需要弄清楚别的东西。)
俗话说正则:
如果你解决了正则表达式的问题,你现在有两个问题。
答案 1 :(得分:1)
您可以使用正则表达式,但我认为在这种情况下有点矫枉过正。所以我个人会坚持你目前的解决方案。
这是有效的,而不是太复杂,这就是为什么我没有看到任何理由转向另一种方法。
答案 2 :(得分:1)
如果您不想使用正则表达式,我认为最简单的解决方案是当您检索文件并且只获得没有扩展名的部分时,然后:
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
答案 3 :(得分:0)
是的,作为Java字符串的正则表达式看起来像(未经测试的)
(.+)_(\\d+)_([^_]+)\\.(???)
“name”为group(1),“version”group(2),xyz为group(3),ext为group(4)。
答案 4 :(得分:0)