如何使用Java减少路径表达式中的双点

问题描述 投票:1回答:2

我正在制作一个Java应用程序,特别是采用以下形式的相对文件路径

String path = "path/to/Plansystem/Xslt/omraade/../../../Kms/Xslt/Rense/Template.xslt"

并减少/简化路径表达式,以便它提供等效路径,但没有双点。也就是说,我们应该获取以下字符串:

String result = "path/to/Kms/Xslt/Rense/Template.xslt"

当前,我已经定义了以下正则表达式:

String parentDirectory = $/\/(?!\.)([\w,_-]*)\.?([\w,_-]*)\/\.\.\//$

然后我将所有匹配项替换为一个斜杠。这种方法似乎可行,并且我使用Regexr.com提出了表达式,但是在我看来,我的方法有点头,如果某些经过良好测试和良好开发的特定功能不可用,我会感到惊讶。图书馆。有没有人熟悉这样的图书馆?

编辑:根据rzwitserloot和Andy Turner的回答,我意识到以下方法对我有用:

public static String slash = "/"
public static final String backslashes = $/\\+/$

static String normalizePath(String first, String... more) {
      String pathToReturn = Paths.get(first, more).normalize().toString().replaceAll(backslashes, slash)
      return pathToReturn
}

请注意,我最后进行的替换仅是出于我的特殊需要,我想在其中保留unix表示法(即使在Windows上运行时也是如此。)>

我正在制作一个Java应用程序,该应用程序特别采用String路径=“ path / to / Plansystem / Xslt / omraade /../../../ Kms / Xslt / Rense / Template.xslt“和...

java regex file path filepath
2个回答
4
投票

不,不要理会正则表达式。有一个API!


3
投票

使用java.nio.Path

© www.soinside.com 2019 - 2024. All rights reserved.