Ersetzen Sie Sonderzeichen in einer Zeichenfolge durch _ (Unterstrich)

89

Ich möchte Sonderzeichen aus einer Zeichenfolge entfernen und durch das _Zeichen ersetzen .

Beispielsweise:

string = "img_realtime_tr~ading3$"

Die resultierende Zeichenfolge sollte wie folgt aussehen: "img_realtime_tr_ading3_";

Ich muss diese Zeichen ersetzen: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }

user1049997
quelle
47
Warum ist das geschlossen, es ist eine gute Frage. Ersetzen von Sonderzeichen, nützlich beim Erstellen von SE-freundlichen URLs. Zum Glück hat noch jemand darauf geantwortet.
Fahrrad
1
Eine außerordentlich enge Situation, die für das weltweite Internetpublikum nicht allgemein anwendbar ist? Sagen wir einfach, dass mindestens 108 Personen anders gedacht haben.
Antoine Pelletier
1
Geschlossen ? Ziemlich nützlich beim Scraping schmutziger Daten.
Stanislasdrg Reinstate Monica
Dies sollte nicht geschlossen werden
Mustkeem K

Antworten:

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

Um alle Zeichen außer Zahlen und Buchstaben zu ändern, versuchen Sie alternativ:

string = string.replace(/[^a-zA-Z0-9]/g,'_');
Niet the Dark Absol
quelle
Cool! !fehlt allerdings in der ersten Zeile.
ProblemsOfSumit
4
Die zweite Zeile ist in mehreren Fällen sehr nützlich.
Mastazi
\-und =auch vermisst :)
Simo D'lo Mafuxwana
2
Wenn Sie einen hello! wordhello__wordstring = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
Sondercharakter
2
@DannyFeliz oder auch string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');wenn Sie nicht wissen, wie viele aufeinanderfolgende Unterstriche
falkodev
1
string = string.replace(/[\W_]/g, "_");
Wen
quelle