如何在JavaScript中实现类似PHP str_replace的多字符替换?
问题分析与解决
你的代码问题出在JavaScript的replace方法默认行为和PHP的str_replace不一样:
- PHP的
str_replace会全局替换所有匹配的内容; - 但JavaScript里,当
replace的第一个参数是普通字符串时,只会替换第一个匹配到的内容。
你的代码最后一步replace(" ", "-")只替换了第一个空格,所以处理后结果是one-two three,而不是你想要的one-two-three。
正确写法
要实现全局替换,得用正则表达式并加上g(全局匹配)标志,以下是几种可行的写法:
写法1:分步替换
var text = "one two (three)"; // 先全局替换所有括号为空,再全局替换所有空格为短横线 alert(text.replace(/[()]/g, "").replace(/ /g, "-"));
写法2:合并正则(一步处理括号)
var text = "one two (three)"; alert(text.replace(/\(|\)/g, "").replace(/ /g, "-"));
写法3:处理连续空格(可选)
如果要把多个连续空格也换成单个短横线,可以用\s+匹配:
var text = "one two (three)"; // 多个空格的情况 alert(text.replace(/[()]/g, "").replace(/\s+/g, "-"));
内容的提问来源于stack exchange,提问作者Faye D.
相关产品推荐
相关产品推荐

