关于replace()的一些理解

首先,先来看一下w3中的介绍:
w3上的介绍
一般来说常用的方法就是用一个字符串来代替所要替换的字符串例如:

var a="123456"
b=a.replace("234","aaa")
"1aaa56"
console.log(b)
//输出1aaa56

其中第一个参数也可用正则来做查找条件,但默认是找到第一个就返回替换后的值,而不是在接着向下查找,在正则中有全局匹配条件/g时则会进行全局匹配,如下:

a="abcdefabcabc"
b=/abc/
var c=a.replace(b,"111")
console.log(c)
//输出111defabcabc
b=/abc/g
c=a.replace(b,"111")
console.log(c)

//输出 111def111111

这应该就是最常用的方法,但其实replace的第二个参数可以是一个函数,即下面这种形式


str.replace(/(正则).+?(式)/,function() {
    console.log(arguments);
});

根据ECMAScript规定,replace()方法的参数replacement可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将替换文本使用。第一个参数表示匹配到的字符,第二个参数表示匹配到的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。
让我们先来试试下面这段代码

var a="abcda"
var b=/a/
var c=a.replace(b,function(d,e,f){
   return e;
})
console.log(c);
//结果为:0bcda

什么意思呢?第一个参数代表匹配到的字符,即形参d=“a”,第二个参数e表示匹配到的字符的位置,因为字符串中a是第一个,所以返回0,这返回的0去替换原先的a,所以输出为0bcda,第三个参数f表示被匹配的字符,即为变量a。
大概就是这个样子,下面有道关于这个的题,大家可以看一下:
题目:
小科去了一家新的公司做前端主管,发现里面的前端代码有一部分是 C/C++ 程序员写的,他们喜欢用下划线命名,例如: is_good。小科决定写个脚本来全部替换掉这些变量名。
完成 toCamelCaseVar 函数,它可以接受一个字符串作为参数,可以把类似于 is_good 这样的变量名替换成 isGood。
变量名首尾的下划线不需要做处理,中间的下划线全部删除并且处理成驼峰。
解答为:

const toCamelCaseVar = (variable) =>{
      variable.replace(/([^_])(?:_+(\S))/g, (_, f, p) => f +p.toUpperCase())
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值