您的位置:首页 > Web前端 > JavaScript

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

2017-05-24 11:12 260 查看
以前面试遇到的一道题,意思就是:把取出字符串中的连续数字并把数字乘以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函数去掉了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐