Zamień ciąg na wartości z dwóch tablic
Mam ciąg znaków na przykład:
var string = 'This is a text that needs to change';
A potem mam dwie tablice.
var array1 = new Array('a', 'e', 'i', 'o', 'u');
var array2 = new Array('1', '2', '3', '4', '5');
Teraz to, co muszę zrobić, to sprawdzić ciąg z tablicą 1 i zastąpić ciąg odpowiednią wartością z tablicy 2. Tak więc za pomocą funkcji, aby to zrobić, muszę uzyskać coś takiego:
string = 'Th3s 3s 1 t2xt th1t n22ds to ch1ng2';
Jakieś pomysły na rozwiązanie tego problemu? I może być skutecznym podejściem? Ponieważ planuję używać tego na ogromnych porcjach danych.
EDYTOWAĆ:
Na podstawie odpowiedzi tutaj skompilowałem kod, który pozwala na powyższe operacje, a jednocześnie dopuszcza kilka znaków specjalnych. Sprawdź to.
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 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);
amp;");
}
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);