2017-07-02 36 views
0

我试图做一个函数,可以采取一个字符和一个字符串作为参数,并从字符串中删除该字符。删除任何给定字符串的任何给定的字符串

function removeCharacter(char, str) { 
    return str.replace(char, ''); 
} 
ex: removeCharacter('r', "character") - > chaacte 

否则这样只会删除第一个字符,所以我发现了关于全球正则表达式,但这里是我碰了壁...我怎样才能使它所以它可以采取任何给定的字符是这样的:

str.replace(/char/g, '') 

我想传递一个字符作为函数的参数和它们全部删除。有没有办法与正则表达式或我应该使用for语句?或者,还有更好的方法?

+0

参见本:https://stackoverflow.com/questions/20769908/remove-specific-char-from-string – TJcobra

+0

你的参考文献是在Java中:) – ValLeNain

回答

3

您可以构造一个正则表达式。

function removeCharacter(char, str) { 
    var reg = new RegExp(char, 'g'); 
    return str.replace(reg, ''); 
} 

[编辑]
这个答案只能是在不从视正则表达式点特殊字符(如“/”,“(”字符“”),否则会失败或有意外的行为。比照@Wiktor's answer

+0

这就是我所需要的。非常感谢你:) –

+0

@AlinFaur:我怀疑这是你需要的。用'('来尝试。 –

2

要删除字符的多次出现,你在JavaScript中,该构造有g(全球)修改正则表达式need to use a regex

但是,你不能只用/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

相关问题