Java 替换所有出现的。规范化

Java 替换所有出现的。规范化,java,regex,Java,Regex,假设我有字符串“foo//bar”,那么它应该被规范化为“foo/bar”。 我尝试使用以下正则表达式执行此操作: String result = filePath.replaceAll("\\./", ""); 但这对我不起作用。。有什么想法吗?在Java 7中,类中有用于此的内置方法。(如果您没有使用Java 7,那么很抱歉。) 无论如何,regexp可能不是实现路径规范化的最佳方法。进行拆分然后将path元素添加到堆栈中要容易得多,当元素为时不添加任何内容,如果元素为,则会弹出。我猜您想

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

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

但这对我不起作用。。有什么想法吗?

在Java 7中,类中有用于此的内置方法。(如果您没有使用Java 7,那么很抱歉。)


无论如何,regexp可能不是实现路径规范化的最佳方法。进行拆分然后将path元素添加到堆栈中要容易得多,当元素为
时不添加任何内容,如果元素为
,则会弹出。我猜您想要的是规范化Windows文件路径,而不仅仅是删除句点(在您的示例中,您必须删除句点和下面的斜杠)。那么,为什么不使用

或者使用Java7之前的版本,您可以

new File(unnormalizedPath).getCanonicalPath();
试试这个

System.out.println("./a/./b/c/."
                    .replaceAll("/[.]/|^[.]/","/")
                    .replaceAll("/[.]",""));
输出

/a/b/c

为什么不仅仅是filePath.replaceAll(“/。/”,“/”),它应该可以工作。我没有看到任何错误。@Vash如果我有像/far/bar/这样的东西怎么办。应该将其标准化为什么?如果是,又该怎么办。/a/b/c/。然后它应该是/a/b/c./a绝对不同于/aHmm,通过向下投票驱动。至少给我一些提示,为什么你认为我的答案是错的,否则我怎么学?@xonegirlz:那么这是家庭作业?如果是这样的话,请在你的问题上加上“家庭作业”标签。@home绝对不是一个homrwork,我只是想练习一下我的正则表达式来参加面试
/a/b/c