String.repalce()比對與更換字串
- 詳細內容
- 分類:Javascript
- 發佈:2013-02-05, 週二 22:08
- 點擊數:3033
Javascript的String.repalce()方法:
repalce()方法利用給定的字串或是正規表達式來搜尋比對字串,
並且用指定的字串來代替比對成功的字串。
如果要替代字串中所有比對成功的子字串,那就必須在正規表達式中使用g旗標,
否則只會更換第一個比對成功的字串,關於這點,請參考一下範例。
注意一點,replace()方法並不會變更原本字串內容,而是傳回一個新的字串。
String.repalce()的語法:
newstr = str.replace(regexp|substr, newSubStr [,flags]);
newstr = str.replace(regexp|substr, function[,flags]);
regexp:要被替換的子字串,以正規表達式物件來表示,比對成功的字串將被參數2所替代。
substr:要被替換的子字串,比對成功的字串將被參數2所替代。
newSubStr:用替代比對成功的字串。
function:會產生一個新字串的函示,後面會再討論
flags:flags是個非標準的參數,並不建議使用,在參數1中使用正規表達式可以避免使用此旗標。
(我家的IE好像完全不理這參數.....所以不用的好....)
flags是由正規表達式的旗標組合而成,有下面幾種:
g:全局搜尋。
i:忽略大小寫。
m:跨行搜尋。
y:非標準中的非標準,表示從正規表達式物件的lastIndex屬性指定的索引後方開始搜尋。
參數2中(newSubStr)可以使用下面幾種特殊參數,此表格並不支援參數2為函式時使用,:
參數 | 說明 |
---|---|
$$ |
插入一個"$".字元 |
$& |
插入比對成功的子字串(被替代的字串) |
$` |
插入比對成功的子字串前的字串 |
$' |
插入比對成功的子字串後的字串 |
$n or $nn |
n或nn是十進位數字, 只有在參數1使用正規表達式時可以使用,用途為插入第n個比對與()內樣本匹配成功的子字串,建議先看一下正規表達式中關於()的描述。 |
第二個參數可以使用函式來代替,當比對完成後會呼叫此函式,函式的傳回值會被當成替代完成後的結果,
要注意的是如果使用全局旗標(g),函式可能會被多次呼叫。
參數 | 說明 |
---|---|
match |
匹配字串. (跟上面提到的 $& 是一樣的意思.) |
p1, p2, ... |
跟上面提到的 $n or $nn 是一樣的意思 |
offset |
匹配字串在整個字串的位置,由0開始 |
string |
整個字串 |
String.repalce()的範例:
<script type="text/javascript">
document.writeln("AAAAAA".replace("A","a")+"<br />");
document.writeln("AAAAAA".replace(/A/g,"a")+"<br />"); //使用g旗標
document.writeln("ABCD".replace(/C/g,"$`c")+"<br />");
document.writeln("ABCD".replace(/C/g,"$'c")+"<br />");
document.writeln("Hi Vic ".replace(/(\w+)\s(\w+)/,"$2 $1")+"<br />");
</script>
String.repalce()的範例輸出:
aAAAAA
aaaaaa
ABABcD
ABDcD
Vic Hi
來看看一個來自於MDN的例子:
var newString = propertyName.replace(/[A-Z]/, '-' + '$&'.toLowerCase()); // 這樣寫是不行的。
按個讚!~支持本站!~