Como remover espaços em uma string? Por exemplo:
Entrada:
'/var/www/site/Brand new document.docx'
Resultado:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
fonte
fonte
" ahm ed ".split('').filter(e => e.trim().length).join('')
Respostas:
Este?
Exemplo
Atualização: Com base nesta pergunta , este:
é uma solução melhor. Produz o mesmo resultado, mas é mais rápido.
O Regex
\s
é a expressão regular para "espaço em branco" eg
é o sinalizador "global", ou seja, corresponde a TODOS\s
(espaços em branco).Uma ótima explicação para
+
pode ser encontrada aqui .Como observação lateral, você pode substituir o conteúdo entre aspas simples para o que desejar, para substituir o espaço em branco por qualquer outra sequência.
fonte
.replace(/\s+/g, '')
mais frequência. Existe alguma diferença entre isso e minha resposta?.replace(' ','')
funcionaria. Muito apreciado!+
tem apenas 60 votos se alguém quiser creditar-lhe também stackoverflow.com/a/5964427/4258817.replace('/\s+/g', '')
porque ele tentará encontrar essa string literal. Este tropeçou-me antes ...Duas maneiras de fazer isso!
fonte
MAIS CURTO E MAIS RÁPIDO :
str.replace(/ /g, '');
Referência:
Aqui estão meus resultados - (2018.07.13) MacOs High Sierra 10.13.3 no Chrome 67.0.3396 (64 bits), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64 bits)):
SHORT strings
Sequência curta semelhante aos exemplos da pergunta OP
A solução mais rápida em todos os navegadores é
/ /g
(regexp1a) - Chrome 17.7M (operação / s), Safari 10.1M, Firefox 8.8M. O mais lento para todos os navegadores foi asplit-join
solução. Alterarpara
\s
ou adicionar+
oui
regexp diminui o processamento.LONG strings
Para uma string com cerca de ~ 3 milhões de caracteres, os resultados são:
Você pode executá-lo em sua máquina: https://jsperf.com/remove-string-spaces/1
fonte
Após a resposta do @rsplak: na verdade, usar o modo split / join é mais rápido do que usar o regexp. Veja o caso de teste de desempenho
assim
var result = text.split(' ').join('')
opera mais rápido que
var result = text.replace(/\s+/g, '')
Em textos pequenos, isso não é relevante, mas nos casos em que o tempo é importante, por exemplo, nos analisadores de texto, principalmente na interação com os usuários, isso é importante.
Por outro lado,
\s+
lida com uma variedade maior de caracteres de espaço. Entre com\n
e\t
, ele também corresponde ao\u00a0
caractere, e é isso que
ocorre quando o texto é usadotextDomNode.nodeValue
.Portanto, acho que a conclusão aqui pode ser feita da seguinte maneira: se você precisar substituir apenas espaços
' '
, use split / join. Se houver símbolos diferentes da classe de símbolos - usereplace(/\s+/g, '')
fonte
way faster
. executou o teste e é única 2,19% mais rápido, no meu Firefox 61.Clique aqui para ver um exemplo de trabalho
fonte
Nota: Embora você use 'g' ou 'gi' para remover espaços, ambos se comportam da mesma forma.
Se usarmos 'g' na função de substituição, ele verificará a correspondência exata. mas se usarmos 'gi', ele ignorará a distinção entre maiúsculas e minúsculas.
para referência clique aqui .
fonte
Embora o regex possa ser mais lento, em muitos casos de uso, o desenvolvedor está manipulando apenas algumas seqüências de caracteres de uma só vez, portanto, considerar a velocidade é irrelevante. Mesmo que / / seja mais rápido que / \ s /, ter o '\ s' explica o que está acontecendo com outro desenvolvedor, talvez com mais clareza.
O uso de Split + Join permite uma manipulação mais encadeada da string.
fonte