2009-12-31 14 views
154

ho bisogno di riformattare una stringa utilizzando jQuery o vaniglia JavaScriptsostituire gli spazi con dei trattini e fare tutte le lettere minuscole

Diciamo che abbiamo "Sonic Free Games".

Voglio convertirlo in "sonic-free-games".

Quindi gli spazi bianchi devono essere sostituiti da trattini e tutte le lettere convertite in lettere minuscole.

Qualsiasi aiuto su questo per favore?

risposta

335

Basta utilizzare la stringa replace e toLowerCase metodi, ad esempio:

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

Avviso la bandiera g sul RegExp, farà la sostituzione globalmente all'interno della stringa, se non è utilizzato, solo il la prima occorrenza verrà sostituita e anche RegExp corrisponderà a uno o più caratteri spazi bianchi.

+27

Una variante mi si avvicinò con usi \ W che rappresenta qualsiasi carattere non alfanumerico. Questo è utile per qualcosa come "A & P Grocery" che diventerebbe "a-p-grocery". 'str.replace (/ \ W +/g, '-'). toLowerCase();' –

+1

Mente che non cita la parte regexp, ovvero 'replace (/ \ s +/g, ..' e ** not **' replace ('/ \ s +/f', ..' (senza apostrofi) –

19

La risposta sopra può essere considerata un po 'confusa. I metodi stringa non sono modificando l'oggetto originale. Essi restituiscono il nuovo oggetto. Deve essere:

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

Penso che sia importante notare che la risposta accettata è stata modificata per incorporare questo concetto –

+0

@GeorgeJempty grazie per quel bit di informazioni +1 –

9

È anche possibile utilizzare split e join:

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