web-dev-qa-db-fra.com

jQuery - Remplace toutes les parenthèses dans une chaîne

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?

22
HaBo

Essayez ce qui suit:

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");

Un peu de REGEX pour saisir ces parenthèses embêtantes.

34
George Reith

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é.

21
Joseph Marikle

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.

6
Sam Greenhalgh

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.

2
jAndy

Un seul remplacement suffira:

"\"a(b)c'd{e}f[g]".replace(/[\(\)\[\]{}'"]/g,"")
1
nana

Cela devrait fonctionner :

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(/g, "").replace(/\)/g, "");
0
David Laberge

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.

0
Ash Burlaczenko

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, "");
0
Matt Fellows

Cela peut résoudre le problème: myString = myString.replace(/\"|\'|\(|\)/)Exemple

0
user3745828