String類的replace()方法的函數參數的理解

(來自幫助文檔)
replace(pattern:*, repl:Object):String
對字符串匹配指定模式並返回一個新字符串,其中的第一個模式匹配項被替換爲 repl 所指定的內容。
相對於字符串匹配指定的 pattern 並返回一個新字符串,其中的第一個 pattern 匹配項被替換爲 repl 所指定的內容。 pattern 參數可以是字符串或正則表達式。 repl 參數可以是字符串或函數;如果是函數,將插入由該函數返回的字符串以替換匹配項。 未修改原始字符串。
指定一個函數作爲 repl 時,replace() 方法將以下參數傳遞給該函數:
• 字符串的匹配部分。
• 任何捕獲到的括號組匹配項都將作爲下一組參數提供。 按這種方式傳遞的參數數目因括號匹配項的數目而異。 您可以通過檢查函數代碼中的 arguments.length - 3 來確定括號匹配項的數目。
• 字符串中匹配開始的索引位置。
• 完整的字符串。
例如,請看以下例子一:
var str1:String = "abc12 def34";
var pattern:RegExp = /([a-z]+)([0-9]+)/;//查找由字母和數字組合而成的字符串
var str2:String = str1.replace(pattern, replFN);
trace (str2); // 12abc 34def

function replFN():String {
return arguments[2] + arguments[1];
}
對replace() 方法的調用使用一個函數作爲 repl 參數。 匹配兩次正則表達式 (/([a-z]([0-9]/g)。
第一次,模式與子字符串 "abc12" 匹配,並將以下參數列表傳遞給該函數:
{"abc12", "abc", "12", 0, "abc12 def34"}
第二次,模式與子字符串 "def23" 匹配,並將以下參數列表傳遞給該函數:
{"def34", "def", "34", 6, "abc123 def34"}

例子二
var str:String = "Now only $9.95!";
var price:RegExp = /\$([\d,]+.\d+)+/i;//查找美元
trace(str.replace(price, usdToEuro));

function usdToEuro(matchedSubstring:String,
capturedMatch1:String,
index:int,
str:String):String
{
var usd:String = capturedMatch1;
usd = usd.replace(",", "");
var exchangeRate:Number = 0.853690;
var euro:Number = usd * exchangeRate;
const euroSymbol:String = String.fromCharCode(8364);
return euro.toFixed(2) + " " + euroSymbol;
}
//輸出:Now only 7.68 €!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章