js:replace使用(失效、只修改了第一个字符)

问题1:replace函数失效

错误之处:使用replace() 去得到相应字符串时忘记赋值修改原字符,导致一直不能得到正确的字符串。
具体看例子1和例子2对比。

问题2:replace只修改了第一个字符,而不是全部都替换

错误之处:replace(“要替换掉的”,“替换后的”) ,这样只能匹配替换第一个符合要求的字符,使用正则的写法 replace(/要替换掉的/g,"替换后的") 可以全局替换。
具体看例子3和例子4对比。

例子1

let name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
console.log(name)  // Doe, John

这里的打印还是原版的字符串,并不是我想要的修改后的

例子2

let name = "Doe, John";
name = name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
console.log(name) // John Doe  

这里可以正确得到,因为replace是:返回一个新的字符串,而不是修改原来的字符串,也就是说我通过replace得到了新的、想要的字符串后,需要重新赋值、修改我的name的属性,才可以。

例子3

let str = 'my name is lilei,lilei,lilei,not hanmeimei,ok?';
str = str.replace("lilei", "madongmei");
console.log(str)// my name is madongmei,lilei,lilei,not hanmeimei,ok? 

这里可以看到只改变了第一个匹配的字符

例子4

let str2 = 'my name is lilei,lilei,lilei,not hanmeimei,ok?';
str2 = str2.replace(/lilei/g, "madongmei");
console.log(str2)// my name is madongmei,madongmei,madongmei,not hanmeimei,ok?

这里可以正确得到,g 这里是global,全局的意思

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值