У меня есть строка, например:Заменить строку со значениями из двух массивов
var string = 'This is a text that needs to change';
И тогда у меня есть два массива.
var array1 = new Array('a', 'e', 'i', 'o', 'u');
var array2 = new Array('1', '2', '3', '4', '5');
Теперь, что я, что нужно сделать, это проверить строку с array1 и заменить строку с соответствующим значением из массива 2. Таким образом, с помощью функции, чтобы сделать это мне нужно, чтобы получить что-то вроде:
string = 'Th3s 3s 1 t2xt th1t n22ds to ch1ng2';
Любые идеи о том, как подойти к этой проблеме? И может быть эффективный подход? Поскольку я планирую использовать это на огромных кусках данных.
EDIT:
Основываясь на ответы здесь я скомпилированные коды, чтобы вышеуказанные операции, а также позволяет несколько специальных символов. Проверьте это.
var string = 'This is a text that needs to change';
var array1 = new Array('ee', 'a', 'e', 'i', 'o', ']');
var array2 = new Array('!', '1', '2', '3', '4', '5');
function escapeString(str){
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
var re = new RegExp('(' + escapeString(array1.join('ૐ')) + ')', 'g');
var nx = new RegExp(re.source.replace(/ૐ/g, "|"), 'g');
alert(nx);
var lookup = {};
for (var i = 0; i < array1.length; i++) {
lookup[array1[i]] = array2[i];
}
string = string.replace(nx, function(c){
return lookup[c]
});
alert(string);
Взгляните на HTTP: // StackOverflow.com/questions/2064047/javascript-replace-globally-with-array –
Вы ищете эквивалент JavaScript [PHP 'str_replace'] (http://php.net/str_replace), что-то вроде http://phpjs.org/functions/str_replace /: 'output = str_replace (array1, array2, input)' – feeela
Возможный дубликат [Замена букв в строке с использованием двух массивов?] (http://stackoverflow.com/questions/21064918/replacing-letters- in-a-string-using-two-arrays) – georg