2009-12-31 10 views
154

que necesitan volver a formatear una cadena usando jQuery JavaScript o vainillasustituir los espacios con guiones y crea todas las letras minúsculas

Digamos que tenemos "Sonic Free Games".

Quiero convertirlo a "sonic-free-games".

Por lo tanto, los espacios en blanco deben reemplazarse por guiones y todas las letras deben convertirse en letras minúsculas.

¿Alguna ayuda al respecto?

Respuesta

335

sólo tiene que utilizar la cadena replace y toLowerCase métodos, por ejemplo:

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

Aviso la bandera g en el RegExp, que hará que la sustitución a nivel mundial dentro de la cadena, si no se utiliza, sólo el la primera aparición será reemplazada, y también, que RegExp coincidirá con uno o más caracteres de espacio en blanco.

+27

Una variación que se me ocurrió usos \ W que representa cualquier carácter no alfanumérico. Esto es útil para algo como 'A & P Grocery' que se convertiría en 'a-p-grocery'. 'str.replace (/ \ W +/g, '-'). toLowerCase();' –

+1

Mente que no se cita la parte de expresión regular, es decir, 'replace (/ \ s +/g, ..' y ** not **' replace ('/ \ s +/f', ..' (sin apóstrofes) –

19

La respuesta anterior se puede considerar un poco confusa. Los métodos de cadena no son que modifican el objeto original. Ellos devuelven nuevo objeto. Debe ser:

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

Creo que es importante tener en cuenta que la respuesta aceptada fue editada para incorporar este concepto –

+0

@GeorgeJempty gracias por ese poco de información +1 –

9

También puede utilizar split y join:

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