• home > webfront > ECMAS > javascript >

    js对replace函数的正则表达式深层次运用!

    Author:[email protected] Date:

    js,replace,一般人都知道!! var test1= "wo shi choulujun " replace( "ch ", "zh "); console log(test1); 这个谁都会呀? 但是这个呢?

    js,replace,一般人都知道!!

    var test1="wo shi choulujun".replace("ch","zh");

    console.log(test1); 

    这个谁都会呀?

    但是这个呢?

    b="a b c d".replace(/\w/g,function(){
          console.log(arguments)
          return arguments[0].toUpperCase();
        });
        console.log(b);
        //一般人我可以告诉他!
    VM55092:3 ["a", 0, "a b c d"]
    VM55092:3 ["b", 2, "a b c d"]
    VM55092:3 ["c", 4, "a b c d"]
    VM55092:3 ["d", 6, "a b c d"]
    VM55092:6 A B C D

    于是又了,

    var a="a b c d";
    var i=0;
    var b= a.replace(/\s/g,function(item,index,string){
        return i++;
    });
    console.log(b);

    js replace里面function 函数参数分别是:当前正则匹配对象,函数苏在位置,当前替换对象!

    就只有这点料??

    目黑呀?

    先回顾下:


    字符替换文本
    $1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
    $&与 regexp 相匹配的子串。
    $`  (注:反引号位于匹配子串左侧的文本。
    $'位于匹配子串右侧的文本。
    $$直接量符号。


    var a1="i'm zhoulujun";

    var b1=a1.replace(/zhoulujun/,"{$&}");    console.log(b1);

    // i'm {zhoulujun}

         var c1= a1.replace(/zhoulujun/,"$' left");

            var c2= a1.replace(/zhoulujun/,"$` right");

            console.log(c1);

            console.log(c2);

    //VM2740:4 i'm  left

    //VM2740:5 i'm i'm  right


    var a1="i'm zhoulujun.";

            

            var c1= a1.replace(/zhoulujun/,"$`left");

            var c2= a1.replace(/zhoulujun/,"$'right");

            console.log(c1);

            console.log(c2);

    //VM2745:6 i'm i'm left.

    //VM2745:7 i'm .right.

    再来看…………

    比如:我要统计字符串重复出现字母的个数?

    var re="zhoulujun";
    function  countRepeat(str){
        if(!str||typeof str!="string"){
            return false;
        }
    
        var arr=str.split("");
        var tem={},max= 1,maxR;
        for(var i=0;i<arr.length;i++){
            if(!tem[arr[i]]){
                tem[arr[i]]=1;
            }else {
                tem[arr[i]]++;
                if(tem[arr[i]]>max){
                    max++;
                    maxR=arr[i];
                }
            }
    
    
        }
        return {
            maxNum:max,
            maxItem:maxR,
            maxFirstIndex:str.indexOf(maxR)
        }
    
    }

    貌似好复杂样子!……

    简单点:……

    正则表达式??怎么搞??T……

    第二:与上面的循环对比?性能那个号?

    ……




    转载本站文章《js对replace函数的正则表达式深层次运用!》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2016_0323_7726.html