zoukankan      html  css  js  c++  java
  • replace的理解

    replace是字符串对象的公有方法,  str.replace(findStr,newStr)

    replace:把字符串里符合规则的部分替换成新的部分.

    先讨论第一个参数,也就是规则

    1.规则是字符串的情况,每当执行一次只能替换一次.

    var str = "hua123hua456";
    var newStr = str.replace("hua","en");
    console.log(newStr); // "en123hua456"
    newStr = newStr.replace("hua","en");
    console.log(newStr); // "en123en456"

    2.规则是正则的情况,和exec捕获一样,把所有和我们正则匹配的部分都捕获到,然后把捕获的内容替换成我们需要替换的新内容

    var str = "hua123hua456";
    var newStr = str.replace(/hua/,"en");
    console.log(newStr); // "en123hua456"

    好像跟想象中的不一样,因为正则的捕获有懒惰性,所以必须用g,也就是/hua/g,这样就en123en456

    然后讨论第二个参数,也就新内容

    新内容是字符串的情况下,上面都是例子

    新内容是回调函数的情况下,稍微有点复杂

    1)回调函数执行多少次,取决于正则在字符串中捕获的次数
    2)每次执行回调函数,里面传递的参数值arguments和我们exec捕获的结果是非常类似的,即使正则有分组,我们同样可以arguments获取到分组捕获的内容
    3)return 返回的结果是啥,就相当于把当前这次大正则的内容替换成你返回的内容

    var str = "hua123hua456";
    var reg = /hua(d)/g;
    var newStr = str.replace(reg,function () {
        console.log("数数我出现的次数"); // 2
        console.log(arguments); // 和下面的接近
        console.log(reg.exec(str));
        return +arguments[1]+1; // 新内容是arguments[1]的值加1
    });
    console.log(newStr); // "223556"
  • 相关阅读:
    luogu_P1850 换教室
    luogu_P3224 [HNOI2012]永无乡
    luogu_P1064 金明的预算方案
    luogu_P2014 选课
    luogu_P3372 【模板】线段树 1(动态开点)
    luogu_P2852 [USACO06DEC]牛奶模式Milk Patterns
    luogu_P1941 飞扬的小鸟
    luogu_P2678 跳石头
    luogu_P1638 逛画展
    【Tyvj2046】掷骰子
  • 原文地址:https://www.cnblogs.com/2han/p/6373859.html
Copyright © 2011-2022 走看看