问题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,全局的意思