昨天在項目中遇到一個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方法的傳回值是一個新的字元串,是替換後的字元串,該方法并不會改變原來的字段值!!!!