注意使用正則表達(dá)式和普通字符串的區(qū)別:
昨天發(fā)現(xiàn)一個因?yàn)檎`用正則表達(dá)式而導(dǎo)致的bug,
錯誤代碼:
public String get××××() {
if(mountPoint!=null && mountPoint.length()>0){
return mountPoint.replaceAll("\\?", "\\|");
}else
return "";
}
這段代碼的本意是為了將
mountPoint中的所有?替換成為|,但是由于沒有仔細(xì)看replaceAll的參數(shù)說明,導(dǎo)致了兩個參數(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