取出字符串中的连续数字并把数字乘以10再返回新的字符串--js中replace的回调函数详解

来源:互联网 发布:java程序员太多了知乎 编辑:程序博客网 时间:2024/05/29 10:49

以前面试遇到的一道题,意思就是:把取出字符串中的连续数字并把数字乘以10再返回新的字符串,当然截取字符串是可以做到的,但是方法太挫,明显得用正则,可是当时不会,后来又遇到这样的面试题目,还是不会,最近看vue的源码看到Line135,总算知道怎么办了。

经常用的replace原来替换值可以用回调函数,怪我以前太无知。。。
以前都只会类似这样的用法:

var tt = "hi#h$ello"tt = tt.replace(/(#|\$)/g, '');console.log(tt);//hihello
用回调函数可以这样:

var tem2 = 'a910-a2-a3'tem2 = tem2.replace(/(\d)+/g, function (macth) {    return macth*10;})console.log(tem2);//a9100-a20-a30
另外如果是要单个数字乘以10的话 , 用/(\d)/g就好啦,结果就是a90100-a20-a30。

这里的回调函数是每次执行到匹配的数字都会执行一次,比如说910、2、3,这里执行三次。


还可以这样用,得到的匹配不全部替换:

var camelizeRE = /-(\w)/g;var camelize =function (str) {    return str.replace(camelizeRE, function (_, c) {         console.log('camelize',_,c);//camelize -i i // camelize -e e        return c ? c.toUpperCase() : '';     })};var tem = 'this-is-el';console.log(camelize(tem))//thisIsEl
这里打印回调函数,可以发现两个参数值的区别。

这段代码是来自vue源码的Line135,只是我把cached函数去掉了。


阅读全文
0 0
原创粉丝点击