3 Formas Fantásticas de Utilizar o Método Gsub do Ruby
On Outubro 4, 2021 by adminVamos falar sobre o método do Ruby gsub
> método.
Primeiro, vai precisar de uma string para jogar com este método.
Porquê?
Porque usa gsub
numa string para substituir partes dela.
De facto:
O “sub” em “gsub” significa “substituto”, e o “g” significa “global”.
Tenho a sua string?
Bom.
Se não, pode pedir emprestado o meu.
Aqui está:
str = "white chocolate"
Vamos dizer que queremos substituir “white” por “dark”.
Aqui está como:
str.gsub("white", "dark")
É dizer:
Dando a string str
, comando para substituir TODAS as ocorrências da primeira palavra (white
) pela segunda palavra (dark
).
O que significa que podemos comer chocolate muito melhor.
Oh espera, é apenas uma string.
Não podemos comer isso!
Anyway…
O método de Ruby’s gsub
pode fazer muito mais do que uma simples substituição.
Vejamos alguns exemplos.
Substituir padrões com uma expressão regular
Substituir uma única palavra está bem.
Mas e se pudesse substituir um padrão?
Tal como:
Um ano, um endereço de e-mail, um número de telefone, etc.
Você pode!
Aqui está um exemplo:
"a1".gsub(/\d/, "2")# "a2"
O primeiro argumento é uma expressão regular, e é demasiado para cobrir aqui.
Mas é uma linguagem de correspondência de padrões.
Neste caso, \d
procura números, como o “1” em “a1”.
>
Também pode fazer isto:
"a1".gsub(/(\w)(\d)/, '')
Que resulta em:
"1a"
Trocamos a ordem!
Isto funciona usando uma funcionalidade chamada “grupos de captura”.
Podemos usar os grupos como para o primeiro grupo,
para o segundo grupo, etc.
Grupos são criados com parênteses.
Advanced Gsub With Blocks
As coisas ficam realmente interessantes quando você começa a usar o gsub com um bloco.
Porquê?
Porque dentro de um bloco você pode usar a lógica para decidir como substituir algo.
Em vez de usar um valor estático.
Por exemplo:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Encontramos o animal com \w+
, que significa “um ou mais caracteres alfanuméricos”.
Então:
- Se for um “cão”, substituímos por “gato”
- Se a palavra for qualquer outra coisa, substituímos por “cão”
Este tipo de lógica não é possível com um valor estático, o 2º parâmetro do gsub.
Substituir múltiplos termos por um hash
Se você tiver uma lista de substituições para fazer você pode usar um hash.
Tal como este:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Este funciona como um dicionário de tradução, onde as chaves serão substituídas pelos seus valores.
Aqui está um exemplo:
"BBBGR".gsub(/\w/, colors)
O que resulta em:
"bluebluebluegreenred"
Certifique-se de que o seu 1º argumento irá corresponder às chaves.
Neste caso, \w
corresponde a caracteres individuais, por isso irá corresponder a “B” e depois substitui-lo por “azul”.
Sumário
Você aprendeu sobre o método gsub em Ruby! É um método poderoso que lhe permite substituir, ou substituir caracteres dentro de uma string.
Tem múltiplos usos:
- Remover caracteres inválidos (fazendo do 2º argumento uma string vazia)
- Substituir placeholders &As siglas pelos seus valores completos
- Usar padrões &Lógica para alterar uma string
Agora é a sua vez de praticar com este método para que possa fazer o seu novo conhecimento colar.
>
Pelidos de leitura 🙂
Deixe uma resposta