J'ai essayé ceci:
mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace("(", "").replace(")", "");
Cela fonctionne pour toutes les guillemets doubles et simples, mais pour les parenthèses, cela ne remplace que la première parenthèse de la chaîne.
Comment puis-je le faire fonctionner pour remplacer toutes les parenthèses dans la chaîne en utilisant JavaScript? Ou remplacer tous les caractères spéciaux d'une chaîne?
Essayez ce qui suit:
mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");
Un peu de REGEX pour saisir ces parenthèses embêtantes.
Vous devriez utiliser quelque chose de plus comme ceci:
mystring = mystring.replace(/["'()]/g,"");
La raison pour laquelle cela ne fonctionnait pas pour les autres est parce que vous avez oublié l'argument "global" (g)
notez que [...]
est une classe de caractères. quoi que ce soit entre ces crochets est remplacé.
Vous devriez pouvoir le faire dans une seule instruction replace.
mystring = mystring.replace(/["'\(\)]/g, "");
Si vous essayez de remplacer tous les caractères spéciaux, vous pouvez utiliser un modèle comme celui-ci.
mystring = mystring.replace(/\W/g, "");
Qui remplacera tout caractère non Word.
Vous pouvez également utiliser une expression régulière si vous recherchez des parenthèses, il vous suffit de les échapper.
mystring = mystring.replace(/\(|\)/g, '');
Cela supprimera tous les (
Et )
Dans la chaîne entière.
Un seul remplacement suffira:
"\"a(b)c'd{e}f[g]".replace(/[\(\)\[\]{}'"]/g,"")
Cela devrait fonctionner :
mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(/g, "").replace(/\)/g, "");
En effet, pour remplacer plusieurs occurrences, vous devez utiliser une expression régulière comme chaîne de recherche lorsque vous utilisez un littéral de chaîne. Comme vous l'avez trouvé, la recherche par chaînes ne remplacera que la première occurrence.
La méthode de remplacement basée sur des chaînes ne remplacera pas globalement. En tant que tel, vous souhaiterez probablement utiliser la méthode de remplacement basée sur l'expression régulière. Ça devrait être noté:
Vous devez vous échapper (
et )
car ils sont utilisés pour l'appariement des groupes:
mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(/g, "").replace(/\)/g, "");
Cela peut résoudre le problème: myString = myString.replace(/\"|\'|\(|\)/)
Exemple