Eliminar espacios en blanco dentro de una cadena en javascript

101

He leído esta pregunta sobre el recorte de JavaScript, con una respuesta de expresión regular.

Luego espero que el recorte elimine el espacio interior entre Hello y World.

function myFunction() {
    alert("Hello World ".trim());
}

EDITADO

¿¡Por qué esperaba eso !?

¡Disparates! ¡Obviamente el recorte no elimina los espacios interiores !, solo los iniciales y finales, así es como funciona el recorte, entonces esta fue una pregunta muy incorrecta, mis disculpas.

Hernán Eche
fuente
10
trim elimina los espacios en blanco del principio y el final de una cadena
Manse
3
Recortar elimina los espacios en blanco antes y después de una cuerda. Hello Worldya está "recortado".
Rocket Hazmat
@limelights para mostrar "HelloWorld" en lugar de "Hello World"
Hernán Eche
4
@void: Eso no es "recortar", es un problema diferente.
Rocket Hazmat

Respuestas:

236

Para uso de eliminación de caracteres espaciales

"hello world".replace(/\s/g, "");

para todos los espacios en blanco, use la sugerencia de Rocket en los comentarios a continuación.

Henrik Andersson
fuente
137
Es posible que desee utilizar .replace(/ /g, '')si hay más de una vez espacio.
Rocket Hazmat
@Rocket, eso es absolutamente cierto, ¡todavía no he actualizado la respuesta! ¡Gracias! :)
Henrik Andersson
47
@Juhana: Si desea eliminar otros espacios en blanco a continuación, hacer demasiado: .replace(/\s/g, '').
Rocket Hazmat
12
@RocketHazmat ¡sí! ¡La respuesta correcta! aunque esto podría ser un poco más eficiente: str.replace (/ \ s + / g, '')
jackocnr
3
@PitchiahNatarajan \scoincidirá con espacios, tabulaciones y nuevas líneas.
Rocket Hazmat
8

Probablemente porque olvidó implementar la solución en la respuesta aceptada . Ese es el código que hace que trim()funcione.

actualizar

Esta respuesta solo se aplica a los navegadores más antiguos. Los navegadores más nuevos aparentemente admiten de trim()forma nativa.

John Conde
fuente
2
No necesariamente, algunos navegadores lo tienen integrado. :-P
Rocket Hazmat
1
Está presente en la mayoría de los navegadores modernos ahora -> kangax.github.com/es5-compat-table
Manse
1

Puede utilizar el método de sustitución de cadenas con una expresión regular.

"Hello World ".replace(/ /g, "");

El método replace () devuelve una nueva cadena con algunas o todas las coincidencias de un patrón reemplazadas por un reemplazo. El patrón puede ser una cadena o una expresión regular

RegExp

  • / / - Espacios coincidentes de expresiones regulares

  • g - Bandera global; encontrar todas las coincidencias en lugar de detenerse después de la primera coincidencia

JSON C11
fuente
1

Puedes usar

"Hello World ".replace(/\s+/g, '');

trim()solo elimina los espacios finales en la cadena (primero y último en la cadena). En este caso, esta expresión regular es más rápida porque puede eliminar uno o más espacios al mismo tiempo.

Si cambia la cadena vacía de reemplazo a '$', la diferencia se vuelve mucho más clara:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Comparación de rendimiento: /\s+/ges más rápida. Vea aquí: http://jsperf.com/s-vs-s

ArlanG
fuente
La respuesta actualmente aceptada hace lo mismo. Presente algunas pruebas relevantes que indiquen que esto es más rápido que esa respuesta en algo más de nanosegundos.
Heretic Monkey
@HereticMonkey ¡Actualizado!
ArlanG