JavaScript 字符串替換
■知識點
使用字符串的replaceO方法可以替換指定的子字符串。該方法包含2個參數(shù),第1個參數(shù)表示執(zhí)行匹配的正則表達式,第2個參數(shù)表示準(zhǔn)備替換匹配的子字符串。
■實例設(shè)計
【示例1】下面的代碼使用replaceO方法替換字符串中“html”為“htm”。
var s = "http://www.mysite.cn/index.html";
var b = s.replace( /html/, "htm" ) ; //把字符串 html 替換為 htm
console.log ( b ); //返回字符串"http://www.mysite .cn/index.htm"
該方法第1個參數(shù)是一個正則表達式對象,也可以傳遞字符串。
【示例2】下面的代碼在使用replaceO方法時,靈活使用替換函數(shù)修改匹配字符串。
var s = "http://www.mysite.cn/index.html";
function f ( x ) { //替換文本函數(shù)
return x. substring ( x. lastlndexOf (".") +1, x. length - 1 ) //獲取擴展名部分字符串
}
var b = s.replace ( / (html) /, f (s) ) ; //調(diào)用函數(shù)指定替換文本操作
console, log ( b ); //返回字符串"http://www.mysite.cn/index.htm"
replace方法實際上執(zhí)行的是同時查找和替換兩個操作。它將在字符串中查找與正則表達式相匹配的子字符串,然后調(diào)用第2個參數(shù)值或替換函數(shù)替換這些子字符串。如果正則表達式具有全局性質(zhì)g,那么將替換所有的匹配子字符串;否則,它只替換第一個匹配子字符串。
【示例3】在replaceO方法中約定了一個特殊的字符($),這個美元符號如果附加一個序號就表示對正則表達式中匹配的子表達式存儲的字符串引用。
var s = "JavaScript";
var b = s . replace ( / (Java) (Script) /, "$2-$1"), //交換位置
console, log ( b ); //返回字符串"Script-Java"
在上面的示例中,正則表達式/Gava)(script)/中包含兩對小括號,按順序排列,其中第1對小括號表示第1個子表達式,第2對小括號表示第2個子表達式,在replaceO方法的參數(shù)中可以分別使用字符串"$1"和"$2"來表示對它們匹配文本的引用。另外,美元符號與其他特殊字符組合還可以包含更多的語義,詳細(xì)說明可以參考下一章正則表達式的講解。
【示例4】下面的代碼把字符串中每個單詞轉(zhuǎn)換為首字母大寫形式顯示。
var s = ' javascript is script , is not java.’; //定義字符串
//定義替換文本函數(shù),參數(shù)為第1個子表達式匹配文本
var f = function($1){
//把匹配文本的首字母轉(zhuǎn)換為大寫
return $1.substring( 0, 1 ) .toUpperCase () + $1.substring( 1 ) .toLowerCase();}
var a = s . replace ( / (\b\w+\b) /g, f ) ; //匹配文本并進行替換
console. log ( a ); //返回字符串"Javascript Is Script, Is Not Java."
在上面的示例中,替換函數(shù)的參數(shù)為特殊字符“sr,它表示正則表達式/(\b\w+\b)/中小括號匹配的文本,在函數(shù)結(jié)構(gòu)內(nèi)對這個匹配文本進行處理,截取其首字母并轉(zhuǎn)換為大寫形式,余下字符全部小寫,然后返回新處理的字符串。replace方法在原文本中使用這個返回的新字符串替換掉每次匹配的子字符串。
【示例5】對于上面的示例,還可以進一步延伸,使用小括號來獲取更多的匹配信息。例如,直接利用小括號傳遞單詞的首字母,然后進行大小寫轉(zhuǎn)換處理,處理結(jié)果都是一樣的。
var s = 'javascript is script , is not java.'; //定義字符串
var f = function ($1, $2, $3) { //定義替換文本函數(shù),請注意參數(shù)的變化
return $2.toUpperCase()+$3;
}
var a = s.replace(八b(\w) (\w*)\b/g, f );
console.log( a );
在函數(shù)f()中,第1個參數(shù)表示每次匹配的文本,第2個參數(shù)表示第1個小括號的子表達式所匹配的文本,即單詞的首字母,第2個參數(shù)表示第2個小括號的子表達式所匹配的文本。
點擊加載更多評論>>