注意使用正則表達式和普通字符串的區(qū)別:
昨天發(fā)現(xiàn)一個因為誤用正則表達式而導致的bug,
錯誤代碼:
public String get××××() {
if(mountPoint!=null && mountPoint.length()>0){
return mountPoint.replaceAll("\\?", "\\|");
}else
return "";
}
這段代碼的本意是為了將
mountPoint中的所有?替換成為|,但是由于沒有仔細看replaceAll的參數(shù)說明,導致了兩個參數(shù)都是用regular express所必需的\\轉(zhuǎn)義符號。
replaceAll(String regex, String replacement)
因此正確的代碼是:
public String get××××() {
if(mountPoint!=null && mountPoint.length()>0){
return mountPoint.replaceAll("\\?", "|");
}else
return "";
}
同樣需要注意的包括indexOf,split