位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 字符串替換

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-24

■知識(shí)點(diǎn)

使用字符串的replaceO方法可以替換指定的子字符串。該方法包含2個(gè)參數(shù),第1個(gè)參數(shù)表示執(zhí)行匹配的正則表達(dá)式,第2個(gè)參數(shù)表示準(zhǔn)備替換匹配的子字符串。

■實(shí)例設(shè)計(jì)

【示例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個(gè)參數(shù)是一個(gè)正則表達(dá)式對(duì)象,也可以傳遞字符串。

【示例2】下面的代碼在使用replaceO方法時(shí),靈活使用替換函數(shù)修改匹配字符串。 

var s = "http://www.mysite.cn/index.html";

function f ( x ) {                                      //替換文本函數(shù)

    return x. substring ( x. lastlndexOf (".") +1, x. length - 1 )     //獲取擴(kuò)展名部分字符串

}

var b = s.replace ( / (html) /, f (s) ) ;                      //調(diào)用函數(shù)指定替換文本操作

console, log ( b );                                    //返回字符串"http://www.mysite.cn/index.htm"

    replace方法實(shí)際上執(zhí)行的是同時(shí)查找和替換兩個(gè)操作。它將在字符串中查找與正則表達(dá)式相匹配的子字符串,然后調(diào)用第2個(gè)參數(shù)值或替換函數(shù)替換這些子字符串。如果正則表達(dá)式具有全局性質(zhì)g,那么將替換所有的匹配子字符串;否則,它只替換第一個(gè)匹配子字符串。


【示例3】在replaceO方法中約定了一個(gè)特殊的字符($),這個(gè)美元符號(hào)如果附加一個(gè)序號(hào)就表示對(duì)正則表達(dá)式中匹配的子表達(dá)式存儲(chǔ)的字符串引用。

var s = "JavaScript";

var b = s . replace ( / (Java) (Script) /, "$2-$1"), //交換位置

console, log ( b );                               //返回字符串"Script-Java"

    在上面的示例中,正則表達(dá)式/Gava)(script)/中包含兩對(duì)小括號(hào),按順序排列,其中第1對(duì)小括號(hào)表示第1個(gè)子表達(dá)式,第2對(duì)小括號(hào)表示第2個(gè)子表達(dá)式,在replaceO方法的參數(shù)中可以分別使用字符串"$1"和"$2"來表示對(duì)它們匹配文本的引用。另外,美元符號(hào)與其他特殊字符組合還可以包含更多的語(yǔ)義,詳細(xì)說明可以參考下一章正則表達(dá)式的講解。


【示例4】下面的代碼把字符串中每個(gè)單詞轉(zhuǎn)換為首字母大寫形式顯示。

var s = ' javascript is script , is not java.’;    //定義字符串

//定義替換文本函數(shù),參數(shù)為第1個(gè)子表達(dá)式匹配文本 

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 ) ; //匹配文本并進(jìn)行替換

console. log ( a );                        //返回字符串"Javascript Is Script, Is Not Java."

    在上面的示例中,替換函數(shù)的參數(shù)為特殊字符“sr,它表示正則表達(dá)式/(\b\w+\b)/中小括號(hào)匹配的文本,在函數(shù)結(jié)構(gòu)內(nèi)對(duì)這個(gè)匹配文本進(jìn)行處理,截取其首字母并轉(zhuǎn)換為大寫形式,余下字符全部小寫,然后返回新處理的字符串。replace方法在原文本中使用這個(gè)返回的新字符串替換掉每次匹配的子字符串。


【示例5】對(duì)于上面的示例,還可以進(jìn)一步延伸,使用小括號(hào)來獲取更多的匹配信息。例如,直接利用小括號(hào)傳遞單詞的首字母,然后進(jìn)行大小寫轉(zhuǎn)換處理,處理結(jié)果都是一樣的。

var s = 'javascript is script , is not java.';     //定義字符串

var f = function ($1, $2, $3) {                 //定義替換文本函數(shù),請(qǐng)注意參數(shù)的變化

      return $2.toUpperCase()+$3;

}

var a = s.replace(八b(\w) (\w*)\b/g, f ); 

console.log( a );

    在函數(shù)f()中,第1個(gè)參數(shù)表示每次匹配的文本,第2個(gè)參數(shù)表示第1個(gè)小括號(hào)的子表達(dá)式所匹配的文本,即單詞的首字母,第2個(gè)參數(shù)表示第2個(gè)小括號(hào)的子表達(dá)式所匹配的文本。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部