我需要将'_'的每个实例替换为一个空格,并将'#'的每个实例替换为无/空。

var string = '#Please send_an_information_pack_to_the_following_address:';

我试过了:

string.replace('#','').replace('_', ' ');

我真的不喜欢这样的链接命令。有没有另一种方法可以一次性完成?


当前回答

如果你想替换多个字符,你可以调用String.prototype.replace(),替换参数是为每个匹配调用的函数。您所需要的只是一个表示将在该函数中使用的字符映射的对象。

例如,如果你想用x替换a,用y替换b,用z替换c,你可以这样做:

Const chars = { a:“x”, b:‘y’, “c”:“z” }; Let s = ' 234abc567bbbac '; S = S .replace(/[abc]/g, m => chars[m]); console.log(年代);

输出:234xyz567yyyyxz

其他回答

不知道为什么还没有人提供这个解决方案,但我发现它非常有效:

var string = '#Please send_an_information_pack_to_the_following_address:'
var placeholders = [
    "_": " ",
    "#": ""
]

for(var placeholder in placeholders){
    while(string.indexOf(placeholder) > -1) {
        string = string.replace(placeholder, placeholders[placeholder])
    }
}

你可以添加任何你喜欢的占位符,而不必更新你的函数。简单!

在正则表达式上指定/g (global)标志来替换所有匹配项,而不仅仅是第一个:

string.replace(/_/g, ' ').replace(/#/g, '')

要用一种东西替换一个字符,用另一种东西替换另一个字符,你真的不能避免需要两个单独的调用来替换。你可以把它抽象成一个函数,就像门把手做的那样,尽管我可能会让它把一个对象的旧/新作为键/值对,而不是一个平面数组。

如果你想替换多个字符,你可以调用String.prototype.replace(),替换参数是为每个匹配调用的函数。您所需要的只是一个表示将在该函数中使用的字符映射的对象。

例如,如果你想用x替换a,用y替换b,用z替换c,你可以这样做:

Const chars = { a:“x”, b:‘y’, “c”:“z” }; Let s = ' 234abc567bbbac '; S = S .replace(/[abc]/g, m => chars[m]); console.log(年代);

输出:234xyz567yyyyxz

一个函数和一个原型函数。

String.prototype.replaceAll = function (search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'gi'), replacement);
};


            var map = {
                '&': 'and ',
                '[?]': '',
                '/': '',
                '#': '',
                // '|': '#65 ',
                // '[\]': '#66 ',
                // '\\': '#67 ',
                // '^': '#68 ',
                '[?&]': ''
            };


             var map2 = [
                {'&': 'and '},
                {'[?]': ''},
                {'/': ''},
                {'#': ''},                
                {'[?&]': ''}
            ];

            name = replaceAll2(name, map2);
            name = replaceAll(name, map);


    function replaceAll2(str, map) {            
        return replaceManyStr(map, str);
    }  

    function replaceManyStr(replacements, str) {
        return replacements.reduce((accum, t) => accum.replace(new RegExp(Object.keys(t)[0], 'g'), t[Object.keys(t)[0]]), str);
    }

String.prototype.replaceAll =函数(obj keydata =“关键”){ const键= keydata.split(关键); 返回Object.entries (obj) .reduce((,(关键,val)) = > a.replace(新的正则表达式(“${键[0]}${关键}${键[1]}',' g '), val),) } Const data='隐藏dv SDC sd {yathin} {ok}' console.log (data.replaceAll ({yathin: 12,好的:“嗨”},{关键}))