Ich möchte mit JavaScript alle Sonderzeichen außer Leerzeichen aus einer Zeichenfolge entfernen.
Zum Beispiel
abc's test#s
sollte ausgegeben werden als
abcs tests
.
Ich möchte mit JavaScript alle Sonderzeichen außer Leerzeichen aus einer Zeichenfolge entfernen.
Zum Beispiel
abc's test#s
sollte ausgegeben werden als
abcs tests
.
Antworten:
Sie sollten die Funktion zum Ersetzen von Zeichenfolgen mit einem einzelnen regulären Ausdruck verwenden. Angenommen, mit Sonderzeichen meinen Sie alles, was kein Buchstabe ist. Hier ist eine Lösung:
quelle
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
Hinweis, es gibt ein Leerzeichen zwischen 0-9 und]Sie können dazu die Zeichen angeben, die Sie entfernen möchten:
Um alle Zeichen außer Zahlen und Buchstaben zu ändern, versuchen Sie alternativ:
quelle
/[^a-zA-Z0-9]/g
()
undwhitespaces
in Zeichenfolge.text().replace(/[ ()]/g, '')
Die erste Lösung funktioniert für kein UTF-8-Alphabet. (Es wird Text wie Привіт schneiden). Ich habe es geschafft, eine Funktion zu erstellen, die RegExp nicht verwendet und eine gute UTF-8-Unterstützung in der JavaScript-Engine verwendet. Die Idee ist einfach, wenn ein Symbol in Groß- und Kleinbuchstaben gleich ist und es sich um ein Sonderzeichen handelt. Die einzige Ausnahme gilt für Leerzeichen.
Update: Bitte beachten Sie, dass diese Lösung nur für Sprachen mit Klein- und Großbuchstaben funktioniert. In Sprachen wie Chinesisch funktioniert dies nicht.
Update 2: Ich bin zur ursprünglichen Lösung gekommen, als ich an einer Fuzzy-Suche gearbeitet habe. Wenn Sie auch versuchen, Sonderzeichen zu entfernen, um die Suchfunktion zu implementieren, gibt es einen besseren Ansatz. Verwenden Sie eine beliebige Transliterationsbibliothek, die nur Zeichenfolgen aus lateinischen Zeichen erzeugt, und dann entfernt der einfache Regexp alle Sonderzeichen. (Dies funktioniert auch für Chinesisch und Sie erhalten auch Nebeneffekte, wenn Sie
Tromsø
== machenTromso
).quelle
Ich kenne kein JavaScript, aber ist es nicht möglich, Regex zu verwenden?
So etwas
[^\w\d\s]
passt zu nichts anderem als Ziffern, Zeichen und Leerzeichen. Es wäre nur eine Frage, die Syntax in JavaScript zu finden.quelle
Ich habe Seaguls sehr kreative Lösung ausprobiert, aber festgestellt, dass Zahlen auch als Sonderzeichen behandelt werden, was nicht meinen Anforderungen entspricht. Hier ist meine (ausfallsichere) Optimierung von Seaguls Lösung ...
quelle
reg
in Ihrer ersten Funktion zu deklarieren .suche alle nicht (Wortzeichen || Leerzeichen):
quelle
Versuchen Sie, diesen zu verwenden
hier steht ^ carat für die Negation \ w für [a-zA-Z0-9_] Wortzeichen und \ s für Leerzeichen / [] / gi für global
quelle
Punkt (.) kann nicht als besonders angesehen werden. Ich habe der Antwort von Mozfet & Seagull eine ODER-Bedingung hinzugefügt:
quelle
quelle
Wessen Sonderzeichen Sie aus einer Zeichenfolge entfernen möchten, erstellen Sie eine Liste davon und verwenden Sie dann die Funktion zum Ersetzen von Javascript, um alle Sonderzeichen zu entfernen.
Oder Sie können eine Schleife für eine ganze Zeichenfolge ausführen und ein einzelnes Zeichen mit dem ASCII-Code vergleichen und eine neue Zeichenfolge neu generieren.
quelle