[英]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.