Remplacer les caractères spéciaux d'une chaîne par _ (trait de soulignement)


93

Je souhaite supprimer les caractères spéciaux d'une chaîne et les remplacer par le _caractère.

Par exemple:

string = "img_realtime_tr~ading3$"

La chaîne résultante devrait ressembler à "img_realtime_tr_ading3_";

J'ai besoin de remplacer ces caractères: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
pourquoi est-ce fermé, c'est une bonne question. Comment remplacer les caractères spéciaux, utile lors de la création d'URL compatibles SE. Heureusement, quelqu'un y a encore répondu.
— vélo le

1
Une situation extraordinairement étroite qui n'est généralement pas applicable à l'audience mondiale d'Internet? Eh bien, disons simplement qu'au moins 108 personnes pensaient autrement.
— Antoine Pelletier

1
Fermé ? Cependant, assez utile pour récupérer des données sales.
— Standaa Reinstate Monica le

Cela ne devrait pas être fermé
— Mustkeem K

Réponses:


210
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_');

Sinon, pour changer tous les caractères à l'exception des chiffres et des lettres, essayez:

string = string.replace(/[^a-zA-Z0-9]/g,'_');

Cool! !manque cependant dans la première ligne.
— ProblemsOfSumit

4
La deuxième ligne est très utile dans un certain nombre d'occasions.
— mastazi

\-et =aussi manquant :)
— Simo D'lo Mafuxwana

2
Si vous avez un caractère spécial avant un espace comme hello! wordvous vous retrouverez avec deux traits de soulignement consécutifs comme celui-ci hello__word, vous pouvez le faire:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
— DannyFeliz

3
@DannyFeliz ou même string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');si vous ne savez pas combien de
— traits de

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.