JavaScript字符串连字符替换失效问题:代码调试与解决求助
问题排查与解决
嘿,这个问题很常见——你遇到的是JavaScript字符串的不可变性导致的!
问题根源
JavaScript中的字符串是不可变的,也就是说replace()方法不会直接修改原字符串,而是返回一个完成替换操作的新字符串。你的代码里只是调用了replace(),但没有把返回的新字符串重新赋值给str变量,所以原字符串根本没变化,输出自然还是原来的20-03-2019。
修复后的代码
只需要把替换后的结果重新赋值给str就行:
function replace(){ var str='20-03-2019'; str = str.replace(/-/g,'/'); // 关键:将新字符串赋值回原变量 console.log(str); } replace();
运行这段代码,就能得到你想要的20/03/2019了。
额外说明
- 你代码里的
/-/g正则表达式是对的,g标志表示全局替换,会把所有的-都换成/;如果没有g,只会替换第一个出现的-,结果会变成20/03-2019。 - 除了
replace(),你也可以用split()+join()的方式实现同样效果,适合不太熟悉正则的场景:function replace(){ var str='20-03-2019'; str = str.split('-').join('/'); console.log(str); } replace();
内容的提问来源于stack exchange,提问作者subhra
相关产品推荐
相关产品推荐

