2013-09-05 17 views
3

什么是JS来一次替换字符串多件事情最简单的方法(互不干扰)?像JavaScript的多个同时更换

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

...所以它产生“国会大厦的房子”,而不是“cahouseol房子”?

+1

最简单的答案是:** **正则表达式+1 –

回答

5
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"]); 
+1

为比我更好的代码,无法看到我的代码对你:)。 –

+0

谢谢,这是一个不完美的解释:) –

2

这个怎么样 -

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']); 
+1

downvote? –

+1

+1,因为我讨厌沉默downvoters :) –