• replace的回调函数。


     今天在看算法时,看到一些题目,感觉replace的回调函数好奇葩,$0 、$1什么的;

    JS的replace方法:

    str.replace(regexp|substr, newSubStr|function)

    regexp参数是你的正则表达式

    substr参数: 表示你要查找的字符/字符串

    newSubStr参数: 表示你要将匹配到的字符串替换成的新字符串

    function参数: 回调函数;这个回调函数又有着多个参数

    replace中回调函数的参数:

    变量名 代表的值
    match 匹配的子串。(对应于上述的$&。)
    p1,p2, ...

    假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)例如,如果是用 /(a+)(+)/ 这个来匹配,p1 就是匹配的 a+p2 就是匹配的 +

    offset

    匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd',匹配到的子字符串是 'bc',那么这个参数将会是 1)

    string 被匹配的原字符串。
    NamedCaptureGroup 命名捕获组匹配的对象
     1 let str = 'aaaabbbcccdde'
     2 // str2 = str2.split('').sort().join('');
     3 let re =  /(w)1+/g
     4 str.replace(re, ($0, $1, $3, $4) => {
     5   console.log($0 + '  ' + $1 + ' '+$3 + ' ' +$4);
     6   /**
     7    *  aaaa  a 0 aaaabbbcccdde
     8       bbb  b 4 aaaabbbcccdde
     9       ccc  c 7 aaaabbbcccdde
    10       dd  d 10 aaaabbbcccdde
    11    */
    12   if (num < $0.length) {
    13     num = $0.length;
    14     char = $1;
    15   }
    16 });
    17 console.log(`字符最多的是${char},出现${num}次`);

    可以看到其实$0, $1对于的就是上述function中的参数;其实放什么都行;

    心得:有些东西看起来好奇怪,就觉得很难;其实只要换一种想法就行了。











  • 相关阅读:
    Java安装以及环境变量配置
    IPython绘图和可视化---matplotlib
    Tensorboard可视化(关于TensorFlow不同版本引起的错误)
    Tensorboard可视化
    关于Tensorflow安装opencv和pygame
    perl将json转换成xml
    cnblogs终于把以前内容的管理权还给我了~
    final评论2
    final评论1
    psp
  • 原文地址:https://www.cnblogs.com/xuhua123/p/12059841.html
Copyright © 2020-2023  润新知