Quello che sto cercando di fare è scrivere una funzione per sostituire una singola parola in una determinata frase. Uno dei requisiti è che il caso della parola sostituita venga conservato come con l'originale.RegExp dinamico con conservazione del caso in JavaScript
ho scritto la seguente funzione:
function replace(str, before, after) {
var re = new RegExp('(\\.*)?(' + before + ')(\\.*)?', 'i');
return str.replace(re, after);
}
// DEBUG
console.log('----- DEBUG START -----');
var tasks = [
replace("A quick brown fox jumped over the lazy dog", "jumped", "leaped"),
replace("Let us go to the store", "store", "mall"),
replace("He is Sleeping on the couch", "Sleeping", "sitting"),
replace("This has a spellngi error", "spellngi", "spelling"),
replace("His name is Tom", "Tom", "john"),
replace("Let us get back to more Coding", "Coding", "bonfires"),
];
for (var i = 0; i < tasks.length; i++) {
console.log('Result #' + i + ': ' + tasks[i]);
}
console.log('----- DEBUG END -----');
Tutto funziona bene, oltre al fatto che il caso della parola after
non è la stessa come il caso della parola before
.
INFORMAZIONI:
ho risolto lo stesso problema usando array (usando split()
, splice()
, indexOf()
) e sostituendo solo l'elemento before
con un non-dinamica RegExp()
e la causa è stata conservata. Questo è il motivo per cui non capisco perché la mia altra soluzione non funzioni.
Grazie - Io non penso a questo. – bx2