欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 函數(shù)replace深入了解

 更新時(shí)間:2013年03月14日 10:08:53   作者:  
在JavaScript中replace函數(shù)作為字符串替換函數(shù),這是一個(gè)威力強(qiáng)大的字符串操作函數(shù),對于常見字符串操作的推薦用法。這篇隨筆就來更加深入的理解它。

replace函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)為字符串或正則表達(dá)式,第一個(gè)參數(shù)同樣可以接受一個(gè)字符串,還可能是一個(gè)函數(shù)。

      首先對于第一個(gè)參數(shù)為字符串的我們不再需要多說"I am a boy".replace("boy","girl"),輸出:"I am a girl"。在這里想說的是第一個(gè)參數(shù)為正則的情形。對于正則表達(dá)式來說首先會(huì)根據(jù)是否全局的(全局//g)決定替換行為,如果是全部的則替換全部替換,非全局的只有替換首個(gè)匹配的字符串。例如:

復(fù)制代碼 代碼如下:

"Ha Ha".replace(/\b\w+\b/g, "He")  // He He

"Ha Ha".replace(/\b\w+\b/, "He")  //He Ha

1:第二個(gè)參數(shù)為字符串:

    對于正則replace約定了一個(gè)特殊標(biāo)記符$:

1.$i (i:1-99) : 表示從左到右正則子表達(dá)式所匹配的文本。
2.$&:表示與正則表達(dá)式匹配的全文本。
3.$`(`:切換技能鍵):表示匹配字符串的左邊文本。
4.$'(‘:單引號):表示匹配字符串的右邊文本。
5.$$:表示$轉(zhuǎn)移。
下面來幾個(gè)demo:

復(fù)制代碼 代碼如下:

"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy

"boy".replace(/\w+/g,"$&-$&") // boy-boy

"javascript".replace(/script/,"$& != $`") //javascript != java

"javascript".replace(/java/,"$&$' is ") // javascript is script

2:第二個(gè)參數(shù)為函數(shù):

      在ECMAScript3推薦使用函數(shù)方式,實(shí)現(xiàn)于JavaScript1.2.當(dāng)replace方法執(zhí)行的時(shí)候每次都會(huì)調(diào)用該函數(shù),返回值作為替換的新值。

     函數(shù)參數(shù)的規(guī)定:

1.第一個(gè)參數(shù)為每次匹配的全文本($&)。
2.中間參數(shù)為子表達(dá)式匹配字符串,個(gè)數(shù)不限.( $i (i:1-99))
3.倒數(shù)第二個(gè)參數(shù)為匹配文本字符串的匹配下標(biāo)位置。
4.最后一個(gè)參數(shù)表示字符串本身。
這就是本文所要說replace威力強(qiáng)大的地方,理論的東西都是干貨,我們需要示例解決一切空洞的問題:

1:字符串首字母大寫:

復(fù)制代碼 代碼如下:

String.prototype.capitalize = function(){

    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();

    } );

};
console.log("i am a boy !".capitalize())

輸出:I Am A Boy !

2:對字符串“張三56分, 李四74分, 王五92分, 趙六84分”的分?jǐn)?shù)提取匯總,算出平均分并輸出每個(gè)人的平均分差距。

復(fù)制代碼 代碼如下:

var s = "張三56分, 李四74分, 王五92分, 趙六84分";

var a = s.match(/\d+/g);

var sum = 0;

for(var i = 0 ; i < a.length; i++){

            sum += parseFloat(a[i]);

}

  

var avg = sum / a.length;

  

function f(){

            var n = parseFloat(arguments[1]);

            return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) :

                        ("低于平均分" + (avg - n))) + "分)";

}

  

var result = s.replace(/(\d+)分/g, f);

console.log(result);

輸出:

張三56分(低于平均分20.5分), 李四74分(低于平均分2.5分), 王五92分(超出平均分15.5分), 趙六84分(超出平均分7.5分)

       JavaScript的replace函數(shù)再加上正則的高級應(yīng)用,JavaScript的replace將會(huì)發(fā)回更大的威力所在,在這里將不再深入正則高級應(yīng)用斷言之類的。

出處:http://www.cnblogs.com/whitewolf/

相關(guān)文章

最新評論