JavaScript: reemplace todas las comas en una cadena [duplicado]
Tengo una cadena con varias comas y el método de reemplazo de cadena solo cambiará la primera:
var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)
Resultado :"thisnewcharis,a,test"
La documentación indica que el valor predeterminado reemplaza todo y que "-1" también indica que se reemplaza todo, pero no tiene éxito. ¿Alguna idea?
El tercer parámetro de la String.prototype.replace()
función nunca se definió como estándar, por lo que la mayoría de los navegadores simplemente no lo implementan. Finalmente fue eliminado y reemplazado por String.prototype.replaceAll()
(ver más abajo).
Solución moderna (2022)
Usar String.prototype.replaceAll()
. Ahora es compatible con todos los navegadores y NodeJS.
var myStr = "this,is,a,test";
var newStr = myStr.replaceAll(",", "-");
console.log( newStr ); // "this-is-a-test"
La forma antigua es usar una expresión regular con bandera g
( global ).
var myStr = "this,is,a,test";
var newStr = myStr.replace(/,/g, "-");
console.log( newStr ); // "this-is-a-test"
¿Tiene problemas con las expresiones regulares?
Es importante tener en cuenta que las expresiones regulares utilizan caracteres especiales que deben tener caracteres de escape . Por ejemplo, si necesita escapar de un .
carácter de punto (), debe usar /\./
literal, ya que en la sintaxis de expresiones regulares un punto coincide con cualquier carácter (excepto los terminadores de línea).
Si necesita pasar una variable como cadena de reemplazo, en lugar de usar una expresión regular literal, puede crear un RegExp
objeto y pasar una cadena como primer argumento. \
Serán necesarias las reglas de escape habituales (que preceden a los caracteres especiales cuando se incluyen en una cadena).
Mostrar fragmento de código
Solo por diversión:
var mystring = "this,is,a,test"
var newchar = '|'
mystring = mystring.split(',').join(newchar);