replaceAll陷阱

如text.replaceAll(filename, newPicName); 出錯

filename 中含有正則表達式的特殊字符,正則表達式引擎將其解釋爲語法錯誤,改成:

text.replace(filename, newPicName);

這樣就行了,按照普通字符來工作。

replaceAll 方法的第一個參數是一個正則表達式。
replace 方法雖然採用採用正則表達式工具工作的,但在其內部已經進行了字面模式處理,
所有的字符都視爲普通字符處理。

不要被 replaceAll 中的 All 欺騙了,這兩種方法都替換所有的字符串,只是採用的形式
不同已。

注:把“/”換成“/”應該這樣寫:text.replace('//','/')而不是text.replace('/','/')

 

例如你過濾一些特殊的字符串  用正則

“/”"*"

都不行

只能這樣

 

private static String filterSpecialChar(String str)
   {
         String[] specialChar={"'","="," ","//","/","*"};
         String s;
         s=str;
         for(int i=0;i<specialChar.length;i++)
         {
             s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
         }
         return(s);
     }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章