首先尝试了如下代码
String dir = System.getProperty("user.dir"); System.out.println(dir); dir = dir.replaceAll("//", "/"); System.out.println(dir);
系统提示“无效的正则表达式:Unexpected internal error”
正确的应该是:
String dir = System.getProperty("user.dir"); System.out.println(dir); dir = dir.replaceAll("////", "/"); System.out.println(dir);
为什么呢?replaceAll函数:public String replaceAll (String regex, String replacement)等价于 Pattern . compile ( regex ).matcher ( str ).replaceAll ( repl ) 。而在Java里面"//"代表"/",所以“//”替换为正则表达式就是“////”了。同样对于“$”符号也是,在Java里面表示为"/$",因此正则表达式为“//$”了。
当然如果你只是想避免"/"带来的问题,可以直接使用java.util.regex.Matcher.quoteReplacement(string)将“/”替换成“//”。