我正在制作一个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“和...