Zamień znaki specjalne w ciągu na _ (podkreślenie)


93

Chcę usunąć znaki specjalne z ciągu i zastąpić je _znakiem.

Na przykład:

string = "img_realtime_tr~ading3$"

Wynikowy ciąg powinien wyglądać jak „img_realtime_tr_ading3_”;

Muszę zamienić te znaki: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
dlaczego to jest zamknięte, to dobre pytanie. Jak zamienić znaki specjalne, przydatne przy tworzeniu adresów URL przyjaznych dla SE. Na szczęście ktoś na to odpowiedział.
rower

1
Niezwykle wąska sytuacja, która nie ma ogólnego zastosowania do odbiorców internetu na całym świecie? Powiedzmy tylko, że co najmniej 108 osób myśli inaczej.
Antoine Pelletier

1
Zamknięte ? Całkiem przydatne podczas skrobania brudnych danych.
Standaa Przywróć Monikę

To nie powinno być zamknięte
Mustkeem K

Odpowiedzi:


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

Alternatywnie, aby zmienić wszystkie znaki z wyjątkiem cyfr i liter, spróbuj:

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

Fajne! !brakuje jednak w pierwszym wierszu.
ProblemsOfSumit

4
Druga linia jest bardzo przydatna w wielu sytuacjach.
mastazi

\-a =także brakuje :)
Simo D'lo Mafuxwana

2
Jeśli masz znak specjalny przed spacją, taką jak hello! wordty, otrzymasz dwa podkreślenia następujące po hello__wordsobie, możesz to zrobić:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz, a nawet string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');jeśli nie wiesz, ile kolejnych podkreślników
falkodev

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.