2009-12-31 7 views

Répondre

335

Il suffit d'utiliser la chaîne replace et toLowerCase méthodes, par exemple:

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

Notez que le drapeau g sur le RegExp, il fera le remplacement globalement dans la chaîne, si elle n'est pas utilisé, seule la la première occurrence sera remplacée, et aussi, que RegExp correspondra à un ou plusieurs caractères d'espace blanc.

+27

Une variation que je suis venu avec des utilisations \ W qui représente un caractère non alphanumérique. Ceci est utile pour quelque chose comme «A & P Grocery» qui deviendrait «a-p-épicerie». 'str.replace (/ \ W +/g, '-'). toLowerCase();' –

+1

L'esprit ne cite pas la partie regexp, c'est à dire 'replace (/ \ s +/g, ..' et ** not **' remplace ('/ \ s +/f', ..' (sans apostrophes) –

19

La réponse ci-dessus peut être considérée comme déroutante un peu. Les méthodes de chaîne ne sont pas en modifiant objet d'origine. Ils renvoient nouvel objet. Il doit être:

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

Je pense qu'il est important de noter que la réponse acceptée a été éditée pour incorporer ce concept –

+0

@GeorgeJempty merci pour ce peu d'information +1 –

9

Vous pouvez également utiliser split et join:

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