Substituição
gsub com padrões.
Substituição é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Substituindo texto com sub
String#sub substitui o first match de um padrão por uma cadeia de substituição. A cadeia original não é alterada; uma nova cadeia é retornada.
s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts sSubstituindo tudo com gsub
gsub significa substituição global. Ele substitui todas as correspondências, não apenas a primeira.
puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))Padrões na substituição
O primeiro argumento de gsub pode ser uma expressão regular completa, permitindo corresponder a padrões flexíveis em vez de textos fixos.
puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))Retorreferências na substituição
Na cadeia de substituição, você pode fazer referência aos grupos capturados com \1, \2 e assim por diante.
puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))A retorreferência da correspondência completa
\0 ou \& faz referência ao texto correspondente completo, o que é útil para envolver correspondências.
puts('cat dog'.gsub(/\w+/, '[\0]'))Forma em bloco de gsub
gsub aceita um bloco. Cada correspondência é passada ao bloco, e o valor retornado pelo bloco se torna a substituição. Isso permite calcular substituições dinamicamente.
result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts resultConvertendo correspondências para maiúsculas
A forma em bloco facilita as transformações. Aqui, colocamos cada palavra em maiúsculas.
title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts titleSubstituição com tabela hash
Se você passar uma tabela hash como segundo argumento, cada correspondência será procurada como uma chave e substituída pelo valor correspondente. Isso é ótimo para mapas de tradução.
map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))Versões que modificam no próprio texto
sub! e gsub! modificam a cadeia de caracteres no próprio texto e retornam nil quando nenhuma alteração é feita.
s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)Removendo texto
Para excluir correspondências, substitua-as por uma cadeia vazia.
puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))Retorreferências de grupos nomeados
Você pode nomear grupos com (?<name>...) e fazer referência a eles na substituição usando \k<name>.
out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts outVerificação rápida
Qual é a diferença entre sub e gsub?
Recapitulação: substituição
Você aprendeu a transformar cadeias de caracteres com padrões:
subsubstitui a primeira correspondência;gsubsubstitui todas- Retorreferências
\1e\&nas substituições - A forma em bloco calcula substituições dinamicamente
- O argumento de tabela hash associa correspondências a valores
sub!/gsub!modificam o conteúdo no próprio texto
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })Perguntas Frequentes
A aula “Substituição” é grátis?
Sim — o texto completo de “Substituição” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Substituição”?
gsub com padrões. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Substituição”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.