替换所有出现的。为了正常化

时间:2011-11-09 20:16:35

标签: java regex

假设我有字符串“foo /./ bar”,那么它应该标准化为“foo / bar”。 我尝试使用以下正则表达式执行此操作:

String result = filePath.replaceAll("\\./", "");

但它对我来说没有用......有什么想法吗?

3 个答案:

答案 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