Ersetzen Sie Leerzeichen durch Bindestriche und machen Sie alle Buchstaben in Kleinbuchstaben


247

Ich muss einen String mit jQuery oder Vanilla JavaScript neu formatieren

Nehmen wir an, wir haben "Sonic Free Games".

Ich möchte es konvertieren "sonic-free-games".

Leerzeichen sollten daher durch Bindestriche ersetzt und alle Buchstaben in Kleinbuchstaben umgewandelt werden.

Irgendwelche Hilfe dazu bitte?

Antworten:


549

Verwenden Sie einfach den String replaceund die toLowerCaseMethoden, zum Beispiel:

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"

Beachten Sie das gFlag auf RegExp, das die Ersetzung global innerhalb der Zeichenfolge vornimmt. Wenn es nicht verwendet wird, wird nur das erste Vorkommen ersetzt, das auch RegExpeinem oder mehreren Leerzeichen entspricht.


52
Eine Variation, die ich mir ausgedacht habe, verwendet \ W, das jedes nichtalphanumerische Zeichen darstellt. Dies ist nützlich für etwas wie "A & P Grocery", das zu "Ap-Grocery" werden würde. str.replace(/\W+/g, '-').toLowerCase();
Adam Waselnuk

1
Achten Sie auf den regexp Teil nicht zu zitieren, das heißt replace(/\s+/g, ..und nicht replace('/\s+/f', .. (ohne Apostroph)
Attila Fulop

Was ist, wenn ich die Leerzeichen am Anfang und Ende der Zeichenfolge entfernen möchte?
Romel Indemne

@RomelIndemne Heutzutage können Sie die String.prototype.trimMethode verwenden:str.trim().replace(/\s+/g, '-').toLowerCase()
CMS

Danke, Netter. Jetzt brauche ich den umgekehrten Weg um xD JK
lawphotog

34

Die obige Antwort kann als etwas verwirrend angesehen werden. String-Methoden ändern das ursprüngliche Objekt nicht. Sie geben ein neues Objekt zurück. Es muss sein:

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str

10
Ich denke, es ist wichtig zu beachten, dass die akzeptierte Antwort bearbeitet wurde, um dieses Konzept aufzunehmen
Dexygen


1

Die Antwort von @ CMS ist in Ordnung, aber ich möchte darauf hinweisen, dass Sie dieses Paket verwenden können: https://github.com/sindresorhus/slugify , das dies für Sie erledigt und viele Randfälle abdeckt (z. B. deutsche Umlaute, Vietnamesisch, Arabisch) , Russisch, Rumänisch, Türkisch usw.).


0

var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
console.log(str);
console.log(str.toLowerCase())

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.