取出字符串中的连续数字并把数字乘以10再返回新的字符串--js中replace的回调函数详解
2017-05-24 11:12
260 查看
以前面试遇到的一道题,意思就是:把取出字符串中的连续数字并把数字乘以10再返回新的字符串,当然截取字符串是可以做到的,但是方法太挫,明显得用正则,可是当时不会,后来又遇到这样的面试题目,还是不会,最近看vue的源码看到Line135,总算知道怎么办了。
经常用的replace原来替换值可以用回调函数,怪我以前太无知。。。
以前都只会类似这样的用法:
这里的回调函数是每次执行到匹配的数字都会执行一次,比如说910、2、3,这里执行三次。
还可以这样用,得到的匹配不全部替换:
这段代码是来自vue源码的Line135,只是我把cached函数去掉了。
经常用的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函数去掉了。
相关文章推荐
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 在字符串中找出连续最长的数字串,并把这个串的长度返回.
- 【微软100题】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回
- ITOO-js中比较时间大小以及在字符串中取出数字
- 使用preg_replace_callback将字符串中所有的数字加一并返回完整字符串
- Ajax请求php返回json对象数据中包含有数字索引和字符串索引,在for in循环中取出数据的顺序问题
- 华为练习题 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)
- C/C++ | 21-9 字符串中找出连续最长的数字串,并把这个串的长度返回
- 微软面试之25 在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 数据结构——算法之(024)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串
- 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 字符串中找出连续最长的数字子串,并返回这个数字串的长度
- js判断是否有6个连续数字的字符串的正则
- 返回固定长度的字符串,必须有数字,大字母小写字母,不能连续4位以上
- 编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
- 25 字符串中找出连续最长的数字串,返回长度