Java位置路径正则表达式拆分

xtfmy6hx  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(131)

我“继承”了现有的Java Selenium & Cucumber框架,它主要是为操作系统编写的。我使用的是Windows,我正在尝试修复并在Windows上运行它。
我的第一个问题是指定当前的文件路径,这是如何写的操作系统:

private String getProjectName(Scenario scenario) {
    return Arrays.asList(scenario.getUri().getPath().replace(System.getProperty("user.dir"), "").split("/")).get(5);
}

我收到的错误是:java.lang.数组索引越界异常:索引5超出长度1的界限
至于Windows,我们使用的是反斜杠,我曾尝试将“/”切换为“”,但由于出现错误(+在我的调查后),我曾尝试使用“\\”,但实际上错误仍然与上面相同。
我知道只提供我的代码的一部分,这可能很难,但第一眼你能告诉我:

  • 如果这个方法可以在Windows上工作,或者应该完全重构?
  • System.getProperty("user.dir")是否正确?
  • 如何正确传递反斜线?
  • 他们为什么要用.get(5)
nhaq1z21

nhaq1z211#

我能猜到

此方法采用的项目名称可能是方案文件所在的文件夹结构中某个文件夹的名称。
这就是为什么他们取了第5个元素,因为在第5层有代表项目的文件夹。
使用的方法看起来很有争议。至少因为有一些多余的步骤,如转换为列表。
现在,你会怎么走
正确的方法是使用java.nio.file.Path(从Java7开始),它负责不同的操作系统特定的事情。
因此,您的代码可能如下所示:

private String getProjectName(Scenario scenario) {
  return Path.of(scenario.getUri()).getName(5)
}

P.S.-当然,您必须更改5,以便在结构中找到所需文件夹的适当位置。

相关问题