2009-12-31 6 views
154

Ich brauche eine Zeichenfolge mit jQuery oder Vanille zu formatieren JavaScriptersetzen Räume mit Bindestrichen und machen alle Buchstaben klein

die wir "Sonic Free Games" haben Lassen Sie sagen.

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

Also Leerzeichen sollten durch Bindestriche und alle Buchstaben in kleine Buchstaben umgewandelt werden.

Hilfe bitte hier?

Antwort

335

Verwenden Sie einfach den String replace und toLowerCase Methoden, zum Beispiel:

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

Beachten Sie die g Flagge auf den RegExp, wird es den Ersatz macht global innerhalb der Zeichenfolge, wenn es nicht verwendet wird, werden nur die Das erste Vorkommen wird ersetzt und RegExp entspricht einem oder mehreren Leerzeichen.

+27

Eine Variante I mit Verwendungen kam \ W welche für jeden nonalphanumeric Charakter. Dies ist nützlich für so etwas wie "A & P Grocery", das "A-P-Lebensmittelgeschäft" werden würde. 'str.replace (/ \ W +/g, '-'). toLowerCase();' –

+1

Den regexp-Teil nicht angeben, dh 'replace (/ \ s +/g, ..' und ** not **' ersetzen ('/ \ s +/f', ..' (ohne Apostroph) –

19

Die obige Antwort kann als etwas verwirrend betrachtet werden. String-Methoden sind nicht Modifizierung Originalobjekt. Sie zurück neues Objekt. Es muss sein:

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

Ich denke, es ist wichtig zu beachten, dass die angenommene Antwort bearbeitet wurde, um dieses Konzept zu integrieren –

+0

@GeorgeJempty danke für dieses bisschen von +1 –

9

Sie auch split und join verwenden können:

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games 
Verwandte Themen