JavaScript tiene un replace()
método de objeto String para reemplazar subcadenas. Este método puede tener dos argumentos. El primer argumento puede ser una cadena o un patrón de expresión regular (objeto regExp) y el segundo argumento puede ser una cadena o una función. A continuación se muestra un ejemplo de replace()
método que tiene ambos argumentos de cadena.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Tenga en cuenta que si el primer argumento es la cadena, solo la primera aparición de la subcadena se reemplaza como en el ejemplo anterior. Para reemplazar todas las apariciones de la subcadena, debe proporcionar una expresión regular con un g
indicador (global). Si no proporciona el indicador global, solo se reemplazará la primera aparición de la subcadena incluso si proporciona la expresión regular como primer argumento. Entonces, reemplacemos todas las ocurrencias del one
ejemplo anterior.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Tenga en cuenta que no ajusta el patrón de expresión regular entre comillas, lo que lo convertirá en una cadena, no en un objeto regExp. Para realizar un reemplazo sin distinción entre mayúsculas y minúsculas, debe proporcionar una i
marca adicional que haga que el patrón no distinga entre mayúsculas y minúsculas. En ese caso, la expresión regular anterior será /one/gi
. Observe la i
bandera agregada aquí.
Si el segundo argumento tiene una función y si hay una coincidencia, la función se pasa con tres argumentos. Los argumentos que obtiene la función son la coincidencia, la posición de la coincidencia y el texto original. Debe devolver con qué se debe reemplazar esa coincidencia. Por ejemplo,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Puede tener más control sobre el texto de reemplazo utilizando una función como segundo argumento.
str_replace
también acepta dos matrices de la misma longitud, donde cada cadena en la primera matriz se reemplaza con la cadena en la segunda matriz en el mismo índice. Consulte stackoverflow.com/a/5069776/296430 para conocer la única función correcta que he encontrado hasta ahora que imita este comportamiento exacto en javascript.