天天看點

js 字元串方法replace,替換字元串中的字元

昨天在項目中遇到一個url中傳輸中文的問題,由于中文中帶有正斜杠 /  導緻此中文字段被切分為兩個url路徑中的字段,導緻找不到請求的url位址,嘗試了使用encodeURIComponent,encodeURI都不可以,原因是:

encodeURI是對url進行編碼的方法,會自動忽略掉/:&等字元

encodeURIComponent雖然對/進行了編碼但浏覽器在發送請求時應是會自動對url進行解碼,導緻請求400 bad request(具體原因不是很清楚,這個方法是測試不通過的)

無奈之下隻能将中文中的/删除掉,就用到了replace方法,這個方法的使用過程也是一波三折,

replace:對字元串中的字元進行替換

文法:

string.replace(regexp/substr,replacement)
           

一開始是使用string.replace(/\//g,'');由于有兩個斜杠//導緻編輯器将雙斜杠當成了注釋,後面的代碼不能執行

後來使用了RegExp對象先建構一個正規表達式,由此又學習了正規表達式的表示的另一種方式

var patt = new RegExp("\","g");//得到/\//g全局比對正斜杠/
string.replace(patt,"");
           

上面代碼正确無誤,但又踩了一個坑,代碼執行完畢後列印string字段仍然是原始值,氣炸!!!!

遂又查找replace的官方使用文檔,發現replace方法的傳回值是一個新的字元串,是替換後的字元串,該方法并不會改變原來的字段值!!!!

繼續閱讀