在一个替换调用中替换多个字符
2022-08-29 23:40:23
						我需要将'_'的每个实例替换为空格,并将'#'的每个实例替换为nothing/empty。
var string = '#Please send_an_information_pack_to_the_following_address:';
我试过这个:
string.replace('#','').replace('_', ' ');
我真的不喜欢像这样链接命令。有没有另一种方法可以做到一个?
我需要将'_'的每个实例替换为空格,并将'#'的每个实例替换为nothing/empty。
var string = '#Please send_an_information_pack_to_the_following_address:';
我试过这个:
string.replace('#','').replace('_', ' ');
我真的不喜欢像这样链接命令。有没有另一种方法可以做到一个?
使用 OR 运算符 ():|
var str = '#this #is__ __#a test###__';
str.replace(/#|_/g,''); // result: "this is a test"
您还可以使用字符类:
str.replace(/[#_]/g,'');
如果你想用一个东西替换哈希,用另一个东西替换下划线,那么你只需要链接。但是,您可以添加一个原型:
String.prototype.allReplace = function(obj) {
    var retStr = this;
    for (var x in obj) {
        retStr = retStr.replace(new RegExp(x, 'g'), obj[x]);
    }
    return retStr;
};
console.log('aabbaabbcc'.allReplace({'a': 'h', 'b': 'o'}));
// console.log 'hhoohhoocc';
但是,为什么不连锁呢?我认为这没有错。
如果要替换多个字符,可以调用 String.prototype.replace(),其中替换参数是为每个匹配项调用的函数。您所需要的只是一个表示您将在该函数中使用的字符映射的对象。
例如,如果要替换为 、with 和 ,则可以执行如下操作:axbycz
var chars = {'a':'x','b':'y','c':'z'};
var s = '234abc567bbbbac';
s = s.replace(/[abc]/g, m => chars[m]);
console.log(s);
输出:234xyz567yyyyxz
 
				    		 
				    		 
				    		 
				    		