假设我有字符串“foo /./ bar”,那么它应该标准化为“foo / bar”。 我尝试使用以下正则表达式执行此操作:
String result = filePath.replaceAll("\\./", "");
但它对我来说没有用......有什么想法吗?
答案 0 :(得分:0)
在Java 7中,Path
类中有内置方法。 (如果您不使用Java 7,那么抱歉。)
无论哪种方式,regexp可能不是实现路径规范化的最佳方式。分割然后将路径元素添加到堆栈更容易,当元素为.
时不添加任何内容,如果它是..
则弹出。
答案 1 :(得分:0)
我想您想要的是规范化Windows文件路径,而不仅仅是删除句点(在您的示例中,您必须删除句点和以下斜杠)。那么,为什么不使用java.nio.Path?
Path path = Paths.get(unnormalizedPath);
Path normalized = path.normalize();
或者使用Java7之前的版本,您可以
new File(unnormalizedPath).getCanonicalPath();
答案 2 :(得分:0)
试试这个
System.out.println("./a/./b/c/."
.replaceAll("/[.]/|^[.]/","/")
.replaceAll("/[.]",""));
输出
/a/b/c