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.