注意使用正则表达式和普通字符串的区别:
昨天发现一个因为误用正则表达式而导致的bug,
错误代码:
public String get××××() {
if(mountPoint!=null && mountPoint.length()>0){
return mountPoint.replaceAll("\\?", "\\|");
}else
return "";
}
这段代码的本意是为了将
mountPoint中的所有?替换成为|,但是由于没有仔细看replaceAll的参数说明,导致了两个参数都是用regular express所必需的\\转义符号。
replaceAll(String regex, String replacement)
因此正确的代码是:
public String get××××() {
if(mountPoint!=null && mountPoint.length()>0){
return mountPoint.replaceAll("\\?", "|");
}else
return "";
}
同样需要注意的包括indexOf,split