¿Cómo eliminar espacios en una cadena? Por ejemplo:
Entrada:
'/var/www/site/Brand new document.docx'
Salida:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
fuente
fuente
" ahm ed ".split('').filter(e => e.trim().length).join('')
Respuestas:
¿Esta?
Ejemplo
Actualización: según esta pregunta , esto:
Es una mejor solución. Produce el mismo resultado, pero lo hace más rápido.
La expresión regular
\s
es la expresión regular para "espacio en blanco", yg
es el indicador "global", que significa coincidir TODOS\s
(espacios en blanco).Una gran explicación para
+
se puede encontrar aquí .Como nota al margen, puede reemplazar el contenido entre comillas simples por lo que desee, de modo que pueda reemplazar los espacios en blanco con cualquier otra cadena.
fuente
.replace(/\s+/g, '')
más a menudo. ¿Hay alguna diferencia entre eso y mi respuesta?.replace(' ','')
funcionaría. ¡Muy apreciado!+
tiene solo 60 votos si alguien quiere acreditarlo también stackoverflow.com/a/5964427/4258817.replace('/\s+/g', '')
porque intentará encontrar esa cadena literal. Esto me hizo tropezar antes ...¡Dos formas de hacer esto!
fuente
MÁS CORTO Y MÁS RÁPIDO :
str.replace(/ /g, '');
Punto de referencia:
Aquí mis resultados: (2018.07.13) MacOs High Sierra 10.13.3 en Chrome 67.0.3396 (64 bits), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64 bits)):
Cuerdas cortas
Cadena corta similar a los ejemplos de la pregunta OP
La solución más rápida en todos los navegadores es
/ /g
(regexp1a): Chrome 17.7M (operación / seg), Safari 10.1M, Firefox 8.8M. Lasplit-join
solución más lenta para todos los navegadores fue la solución. Cambiara
\s
o add+
oi
de expresión regular ralentiza el proceso.Cuerdas largas
Para una cadena de aproximadamente ~ 3 millones de caracteres los resultados son:
Puede ejecutarlo en su máquina: https://jsperf.com/remove-string-spaces/1
fuente
Siguiendo la respuesta de @rsplak: en realidad, usar el modo dividir / unir es más rápido que usar regexp. Ver el caso de prueba de rendimiento
Entonces
var result = text.split(' ').join('')
opera más rápido que
var result = text.replace(/\s+/g, '')
En textos pequeños esto no es relevante, pero para los casos en que el tiempo es importante, por ejemplo, en los analizadores de texto, especialmente cuando interactúan con los usuarios, eso es importante.
Por otro lado,
\s+
maneja una mayor variedad de caracteres espaciales. Entre con\n
y\t
, también coincide con el\u00a0
carácter, y eso es lo que
se entrega cuando se usa el textotextDomNode.nodeValue
.Entonces, creo que la conclusión aquí se puede hacer de la siguiente manera: si solo necesita reemplazar espacios
' '
, use dividir / unir. Si puede haber diferentes símbolos de clase de símbolo , usereplace(/\s+/g, '')
fuente
way faster
. ejecuté la prueba y es solo 2.19% más rápido, en mi Firefox 61.Haga clic aquí para ver un ejemplo de trabajo.
fuente
Nota: Aunque usa 'g' o 'gi' para eliminar espacios, ambos se comportan igual.
Si usamos 'g' en la función de reemplazo, verificará la coincidencia exacta. pero si usamos 'gi', ignora la sensibilidad a mayúsculas y minúsculas.
para referencia haga clic aquí .
fuente
Aunque la expresión regular puede ser más lenta, en muchos casos de uso, el desarrollador solo manipula unas pocas cadenas a la vez, por lo que considerar la velocidad es irrelevante. A pesar de que / / es más rápido que / \ s /, tener '\ s' explica lo que le está sucediendo a otro desarrollador, quizás con mayor claridad.
El uso de Split + Join permite una mayor manipulación encadenada de la cadena.
fuente