Respostas:
Este?
str = str.replace(/\s/g, '');
Exemplo
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Atualização: Com base nesta pergunta , este:
str = str.replace(/\s+/g, '');
é uma solução melhor. Produz o mesmo resultado, mas é mais rápido.
O Regex
\s
é a expressão regular para "espaço em branco" e g
é 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.
.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 ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Duas maneiras de fazer isso!
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)):
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 a split-join
solução. Alterar para
\s
ou adicionar +
ou i
regexp diminui o processamento.
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
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 é usado textDomNode.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, '')
way faster
. executou o teste e é única 2,19% mais rápido, no meu Firefox 61.
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
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 .
Regex + Substituir ()
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.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Dividir () + Aderir ()
O uso de Split + Join permite uma manipulação mais encadeada da string.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')