J'ai une chaîne avec plusieurs virgules, et la méthode de remplacement de chaîne ne changera que la première:
var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)
Résultat: "thisnewcharis,a,test"
La documentation indique que la valeur par défaut remplace tout, et que "-1" indique également qu'il faut tout remplacer, mais que le processus échoue. Des pensées?
Le troisième paramètre de la fonction String.prototype.replace()
n'a jamais été défini comme standard; la plupart des navigateurs ne l'implémentent donc pas.
g
( global ) .var myStr = 'this,is,a,test';
var newStr = myStr.replace(/,/g, '-');
console.log( newStr ); // "this-is-a-test"
Il est important de noter que les expressions régulières utilisent caractères spéciaux à échapper . Par exemple, si vous devez échapper à un point (.
), vous devez utiliser /\./
literal, comme dans la syntaxe regex, un point correspond à n'importe quel caractère (à l'exception des fins de ligne).
var myStr = 'this.is.a.test';
var newStr = myStr.replace(/\./g, '-');
console.log( newStr ); // "this-is-a-test"
Si vous devez passer une variable en tant que chaîne de remplacement, au lieu d'utiliser littéral regex, vous pouvez créer l'objet RegExp
et passer une chaîne en tant que premier argument du constructeur . Les règles d'échappement de chaîne normales (précédant les caractères spéciaux avec \
lorsqu'elles sont incluses dans une chaîne) seront nécessaires.
var myStr = 'this.is.a.test';
var reStr = '\\.';
var newStr = myStr.replace(new RegExp(reStr, 'g'), '-');
console.log( newStr ); // "this-is-a-test"
Juste pour le fun:
var mystring = "this,is,a,test"
var newchar = '|'
mystring = mystring.split(',').join(newchar);
var mystring = "this,is,a,test"
mystring.replace(/,/g, "newchar");
Utilisez l'indicateur global (g
)