Substituindo todos os espaços de uma string por underscore (_). (Javascript)

Você possui uma string e quer substituir todos os espaços dela por underscores (_), mas a função replace não está colaborando? Neste post mostro duas opções de como resolver isso.

Vale lembrar que você pode utilizar a mesma técnica para substituir outros caracteres por underscores ou outra coisa. A lógica vai ser a mesma.

No Javascript, a função replace, quando utilizada de forma estática, substitui apenas a primeira ocorrência do caractere. Sendo assim, se você jogar a frase abaixo em um console:

 

Vai obter o seguinte resultado:

 

Imaginando que não era este o seu objetivo, vamos as opções para substituir todos os caracteres.

 

Utilizando Regex

Vem chegando o regex para salvar o dia novamente.  Neste caso, a sintaxe é bem simples. Você vai substituir / /g por “_”:

 

A ideia é basicamente a mesma e o funcionamento da função replace também, mas a sintaxe utilizada seleciona todos os espaços que estão em uma string e ela substitui todos de uma vez só.

Se você não compreendeu o que está acontecendo com esta sintaxe regex, é o seguinte: /<o que está sendo buscado>/g. A letra g depois da ultima barra indica que é uma busca global. Se você utilizar a sintaxe .replace(/ /, “_”), o resultado será o mesmo que utilizar .replace(” “, “_”).

Você pode utilizar da forma mais conveniente, por exemplo:

 

O código acima vai substituir as palavras lazy dog por bacon, fazendo a frase ficar assim: “The quick brown fox jumps over the bacon.”

 

Observação: Se você utilizar CoffeeScript, altere a sintaxe para /\ /g.

Se você não gosta de regex, temos outra opção…

 

Utilizando split/join

Para contra-intuitivo, mas você pode utilizar da seguinte forma:

 

O código acima vai quebrar a string em um vetor de strings, utilizando os espaços como separador dos itens. Na sequencia, ele transforma o vetor em uma string novamente, utilizando o underscore para unir os itens.

Parece estranho, mas é uma forma simples e rápida de fazer esta substituição.

 

Espero ter ajudado!

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, JavaScript and tagged , , , .