我试图创建一个可以将char和字符串作为参数的函数,并从字符串中删除该字符。
function removeCharacter(char, str) {
return str.replace(char, '');
}
ex: removeCharacter('r', "character") - > chaacte
这样做只会删除第一个字符,所以我发现了全局正则表达式,但这里是我碰壁的地方......我怎么能这样做它所以它可以采取任何给定的字符如下:
str.replace(/char/g, '')
我希望将char作为参数传递给函数并删除所有这些参数。有没有办法用正则表达式或我应该使用for语句?或者有更好的方法吗?
答案 0 :(得分:3)
您可以构建Regexp。
function removeCharacter(char, str) {
var reg = new RegExp(char, 'g');
return str.replace(reg, '');
}
<强> [编辑] 强>
此答案仅适用于从RegExp角度来看不是特殊字符的字符(如'/','(','。')。否则它将失败或出现意外行为.cf @Wiktor's answer。
答案 1 :(得分:2)
要删除多次出现的char,请使用JavaScript need to use a regex,这是一个使用g
(全局)修饰符构造的正则表达式。
但是,您不能只使用/char/g
,您需要使用构造函数表示法,new RegExp(char, "g")
来声明正则表达式。
由于一些字符是保留的,特殊的正则表达式元字符,你必须escape them.
所以,你需要的是
function removeCharacter(char, str) {
return str.replace(new RegExp(char.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), '');
}
console.log(removeCharacter("(", "(abc(")); // => abc
&#13;