Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript multiple simultaneous replace

What is the simplest way in JS to replace multiple things in string at once (without them interfering)? Like

"tar pit".replaceArray(['tar', 'pit'], ['capitol', 'house']);

...so it produces "capitol house", not "cahouseol house"?

like image 846
Kuroki Kaze Avatar asked Feb 15 '23 08:02

Kuroki Kaze


2 Answers

var replaceArray = function(str, from, to) {
   var obj = {}, regex;
   from.forEach(function(item, idx){obj[item] = to[idx];});

   regex = new RegExp('(' + from.join('|') + ')', 'g');
   return str.replace(regex, function(match){return obj[match]});
}

replaceArray("tar pit", ["tar", "pit"], ["capitol", "house"]);
like image 136
Yury Tarabanko Avatar answered Mar 04 '23 05:03

Yury Tarabanko


how about this -

function replaceArray(text, toBeReplacedArray, replacementArray) {
    for (var i = 0; i < toBeReplacedArray.length; i++) {
        var re = new RegExp(toBeReplacedArray[i], 'g');
        text = text.replace(re, '__' + i + '__');

    }

    for (var i = 0; i < replacementArray.length; i++) {
        var re = new RegExp('__' + i + '__', 'g');
        text = text.replace(re, replacementArray[i]);
    }
    return text;
}

replaceArray("tar pit", ['tar', 'pit'], ['capitol', 'house']);
like image 38
Moazzam Khan Avatar answered Mar 04 '23 07:03

Moazzam Khan