繁体   English   中英

从任何给定的字符串中删除任何给定的字符

[英]Remove any given character form any given string

我试图做一个函数,可以将一个char和一个字符串作为参数,然后从字符串中删除该char。

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

这样做只会删除第一个字符,因此我了解了全局正则表达式,但是在这里,我碰壁了……我该如何做,以便它可以接受任何给定的字符,例如:

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

我想将该char作为函数中的参数传递并删除所有它们。 使用正则表达式可以解决此问题,还是应该使用for语句? 或者,还有更好的方法?

您可以构造一个Regexp。

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

[编辑]
从RegExp的角度来看,此答案仅适用于非特殊字符(例如'/','(','。'),否则将失败或具有意外行为。请参阅@Wiktor的答案

要删除多次出现的char,您需要在JavaScript中使用一个正则表达式 ,该正则表达式是使用g (全局)修饰符构造的。

但是,您不能只使用/char/g ,而是需要使用构造函数符号 new RegExp(char, "g")声明正则表达式。

并且由于保留了某些字符,即特殊的正则表达式元字符,因此您必须转义它们。

所以,您需要的是

 function removeCharacter(char, str) { return str.replace(new RegExp(char.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), ''); } console.log(removeCharacter("(", "(abc(")); // => abc 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM