JavaScript字符串提供了一個replace方法。replace方法可以接受兩個參數:第一個參數可以使RegExp對象或者一個字符串,第二個參數可以是一個字符串或者一個函數。如果第一個參數是字符串,那么只會替換第一個字符串。如果想替換所有的字符串,則必須使用正則表達式。
1 var str="hello world"; 2 var str1=str.replace("o","h"); 3 console.log(str1);//hellh world
第一行代碼定義了一個字符串變量,並初始化,第二行代碼使用replace方法,將字符串中的o替換為h,從結果來看使用字符串替換,只能替換第一個字符串。
1 var str="hello world"; 2 var str1=str.replace(/o/g,"h"); 3 console.log(str1);//hellh whrld
上面的代碼使用了正則表達式來傳遞參數,正則表達式會匹配所有的字符串,並替換掉。
1 var str="hello world"; 2 var str1=str.replace(/o/g,function(match,pos,orginText){ 3 console.log(pos); 4 return "a"; 5 }); 6 console.log(str1);//hella warld
上面的代碼,第一行定義了字符串變量,並初始化。第二行調用了字符串的replace方法,第一個參數是模式匹配,第二個參數是一個函數。函數擁有三個參數:第一個參數是匹配到的字符串,第二個參數是匹配的位置,第三個參數是原字符串。在函數里面可以對字符串進行操作。使用函數作為第二個參數,可以做一些復雜的替換,比如當匹配多個字符時候,可以對不同的字符做不同的替換。
1 var str="hello world"; 2 var str1=str.replace(/[ol]/g,function(match,pos,orginText){ 3 console.log(pos); 4 if(match=="o"){ 5 return "a"; 6 } 7 else { 8 return "b"; 9 } 10 11 }); 12 console.log(str1);//hebba warbd
上面的代碼模式匹配所有的字符o或者字符l,並在函數中進行操作。將字符o替換為a,字符l替換為b