JavaScript: reemplace todas las comas en una cadena [duplicado]

Resuelto mike asked hace 12 años • 3 respuestas

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?

mike avatar May 16 '12 06:05 mike
Aceptado

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"
Expandir fragmento


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"
Expandir fragmento

¿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 RegExpobjeto 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

VisioN avatar May 15 '2012 23:05 VisioN

Solo por diversión:

var mystring = "this,is,a,test"  
var newchar = '|'
mystring = mystring.split(',').join(newchar);
RobG avatar May 16 '2012 00:05 RobG