JavaScript-remplacer toutes les virgules dans une chaîne [dupliquer]
cette question a déjà une réponse ici:
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 all, et que" -1 " indique également de remplacer all, mais elle est infructueuse. Toutes les pensées?
3 réponses
le troisième paramètre de la fonction String.prototype.replace()
n'a jamais été défini comme une norme, donc la plupart des navigateurs ne l'implémentent tout simplement pas.
La meilleure façon est d'utiliser des expression régulière avec g
( mondial ) drapeau.
var myStr = 'this,is,a,test';
var newStr = myStr.replace(/,/g, '-');
console.log( newStr ); // "this-is-a-test"
vous avez encore des problèmes?
il est important de notez que les expressions régulières caractères spéciaux qui doivent être échappés . Par exemple, si vous avez besoin d'échapper à un caractère de point ( .
), vous devez utiliser /\./
littéral, comme dans la syntaxe regex un point correspond à n'importe quel caractère simple (sauf les terminateurs 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 comme chaîne de remplacement, au lieu d'utiliser regex literal vous pouvez créer RegExp
objet et passer une chaîne de caractères comme premier argument du constructeur . Les règles normales d'échappement de chaîne de caractères (précédant les caractères spéciaux avec \
lorsqu'ils sont inclus dans une chaîne de caractères) 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");
utiliser le drapeau global( g
)