44.更多replace案例

正则的捕获有两种:

  1.exec方法

  2.字符串的match方法

  3.字符串的replace方法:将原有的字符替换成我们新的字符

    在不使用正则的情况下,使用replace只能替换正则中的一个

    在replace当中我们可以一次批量的把所有正则匹配的内容都替换掉-- replace中是支持正则的

练习:

  1.获取一个字符串中出现次数最多的字符,并且获取出现的次数

    // 1)获取每一个字符出现的次数

    var str = "zhangsanpeixunyangfanqihang";

    var obj = {};

    str.replace(/[a-z]/gi,function(){

      var val = arguments[0]

      obj[val] >= 1 ? obj[val] +=1 : obj[val] = 1

    })

    console.log(obj)

    // 2)获取最多出现的次数

    var maxNum = 0;

    for (var key in obj) {

      obj[key] > maxNum ? maxNum = obj[key] : null;

    }

    // 3)把所有符合出现maxNum次数的都获取到

    var ary = [];

    for (var key in obj) {

      obj[key] === maxNum ? ary.push(key) : null;

    }

    console.log("整个字符串中出现次数最多的字符是:" + ary.toString() + ",出现了" + maxNum + "次")

  2.模板引擎实现的初步原理

    var str = "my name is {0},my age is {1},i come form {2},i love {3}~";

    var ary = ["崔俊丽","18","china","JavaScrpt"];

    str = str.replace(/{(\d+)}/g,function () {

      return ary[arguments[1]];

      // return ary[RegExp.$1]; // 在IE下是不兼容的

    });

    console.log(str);

  思考题:

    1."2015-9-22 13:10:0" 替换成"2015年09月22日 13时10分00秒"

    2.把一个字符串中所有单词的首字母大写 “zhang san pei xun” -> "Zhu Feng Pei Xun"

    3.需求:queryURLParameter

    把url中的参数都获取到,并且保存成如下格式?

    方式一:

    
    var str = "http://kbs.sports.qq.com/kbsweb/game.htm?mid=10000&cid=1467086&app=1.0";
    var obj = {       mid: "10000",       cid:"1467986",       app:"1.0"     }     var reg = /([^?=&]+)=([^?=&]+)/g;     var obj = {};     var res = reg.exec(str);     while (res) {       obj[res[1]] = res[2];       res = reg.exec(str);     }     console.log(obj);

    方式二:

    var str = "http://kbs.sports.qq.com/kbsweb/game.htm?mid=10000&cid=1467086&app=1.0";   
    var obj = {};     str.replace(reg,function() {       obj[arguments[1]] = arguments[2];     });     console.log(obj);

    

 

 

      

转载于:https://www.cnblogs.com/z-dl/p/8985457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值