注意使用正則表達式和普通字符串的區(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