replace 方法
更新:2007 年 11 月
傳回字串的複本的文字由規則運算式 (Regular Expression) 或搜尋字串取代。
function replace(rgExp : RegExp, replaceText : String) : String
引數
rgExp
必要項。包含有規則運算式模式和適用旗標的 Regular Expression 物件的執行個體。也可以是一個 String 物件或常值。如果 rgExp 不是規則運算式物件的執行個體,會轉換成字串,然後為結果展開確實的搜尋;不會將字串轉成規則運算式。replaceText
必要項。String 物件或字串常值,包含用來取代現有字串物件中與 rgExp 比對成功的每個項目文字。JScript 5.5 或以後的版本中,replaceText 引數也可以是傳回取代文字的函式。
備註
replace 方法執行的結果是一個已完成所有指定取代動作的現有字串物件。
任何下列的比對變數可以用來指出來源處最近的相符項目及字串。比對變數可以用在文字取代當中,其中的取代字串是動態決定的。
字元 |
意義 |
---|---|
$$ |
$ (JScript 5.5 或以後版本) |
$& |
說明現有字串物件與整個模式相符合的部分 (JScript 5.5 或以後版本) |
$` |
說明現有字串物件中位於 $& 所敘述符合項目之前的部分 (JScript 5.5 或以後版本) |
$' |
說明現有字串物件中位於 $& 所敘述符合項目之後的部分 (JScript 5.5 或以後版本) |
$n |
第 n 個比對符合的子項目,n 是從 1 到 9 的單個十進位數字 (JScript 5.5 或以後版本)。 |
$nn |
第 nn 個比對符合的子項目,nn 是從 01 到 99 的二位十進位數字 (JScript 5.5 或以後版本)。 |
如果 replaceText 是函式,每個相符的子字串都會以之後的 m + 3 引數來呼叫函式,m 是 rgExp 中左擷取括號的數目。第一個引數是相符的子字串。下個 m 引數是搜尋所找到的所有符合項目。引數 m + 2 是符合的現有字串物件的位移 (Offset),而引數 m + 3 是現有的字串物件。字串值是利用函式呼叫的對應傳回值來取代每一個相符子字串而產生。
replace 方法更新全域 RegExp 物件的屬性。
範例
以下範例說明 replace 方法如何將 "The" 這個字的第一個執行個體以 "A" 來取代。請注意,由於模式區分大小寫,因此只取代 "The" 的第一個執行個體。
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; //Create regular expression pattern.
r = ss.replace(re, "A"); //Replace "The" with "A".
return(r); //Return string with replacement made.
}
此外,replace 方法也可取代模式中的子運算式。以下範例會交換字串中的每一對文字。
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; //Create regular expression pattern.
r = ss.replace(re, "$3$2$1"); //Swap each pair of words.
return(r); //Return resulting string.
}
下列將華氏溫度轉換成攝氏溫度的範例,說明 replaceText 的函式用法,會在 JScript 5.5 和以後版本中見到。若想知道此函式如何運作,請傳入一個字串,其中包含的數字緊鄰字母 "F" (例如,水的沸點是 212)。
function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; //Initialize pattern.
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));