Ruby do Zero: Strings na Prática — Interpolação, Métodos e Formatação

Capítulo 5

Tempo estimado de leitura: 6 minutos

+ Exercício

O que é uma String em Ruby (na prática)

String é um objeto que representa texto. Em Ruby, texto é tratado como um valor manipulável: você pode combinar, transformar, buscar trechos, substituir partes e formatar saídas. A maior parte do trabalho com strings acontece usando métodos (funções ligadas ao próprio objeto), muitas vezes encadeados para produzir um resultado final.

Aspas simples vs aspas duplas

Aspas simples: texto “literal”

Strings com aspas simples ('...') são mais literais: não interpretam interpolação e quase não processam escapes (com exceção de \ e \').

nome = "Ana"

puts 'Olá, #{nome}'
# Saída: Olá, #{nome}

puts 'Caminho: C:\\temp'
# Saída: Caminho: C:\temp

Aspas duplas: interpolação e escapes

Strings com aspas duplas ("...") permitem interpolação (#{...}) e interpretam escapes como \n (nova linha), \t (tab), \" (aspas duplas) etc.

nome = "Ana"
idade = 28

puts "Olá, #{nome}. Você tem #{idade} anos."
# Saída: Olá, Ana. Você tem 28 anos.

puts "Linha 1\nLinha 2"
# Saída:
# Linha 1
# Linha 2

Interpolação: inserindo valores dentro do texto

Interpolação é a forma mais comum e legível de montar textos em Ruby. Dentro de #{...} você pode colocar variáveis e expressões.

produto = "Café"
preco = 19.9
quantidade = 3

puts "Produto: #{produto} | Total: #{preco * quantidade}"

Passo a passo: interpolar com formatação simples

  • 1) Calcule o valor em Ruby (número, data, etc.).
  • 2) Converta/forme o valor para texto (quando necessário).
  • 3) Interpole no template com "...#{...}...".
subtotal = 19.9 * 3
puts "Subtotal: #{'%.2f' % subtotal}"  # 2 casas decimais

Escape: quando você precisa “escapar” caracteres

Escape é escrever uma sequência para representar um caractere especial dentro da string.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

  • \n: quebra de linha
  • \t: tabulação
  • \": aspas duplas dentro de string com aspas duplas
  • \': aspas simples dentro de string com aspas simples
  • \\: barra invertida literal
puts "Ele disse: \"oi\""
puts 'It\'s ok'
puts "Pasta: C:\\Users\\ana"

Concatenação e construção de texto

Usando + (gera uma nova string)

nome = "Ana"
msg = "Olá, " + nome + "!"
puts msg

Usando << (concatena na mesma string)

<< modifica o objeto original (útil para montar textos grandes).

texto = ""
texto << "Linha 1"
texto << " | "
texto << "Linha 2"
puts texto

Usando join (ideal para listas)

partes = ["Ruby", "Strings", "na", "Prática"]
puts partes.join(" ")
# Saída: Ruby Strings na Prática

Métodos comuns de String (com exemplos)

Abaixo estão métodos muito usados no dia a dia. Em Ruby, a maioria retorna uma nova string (não altera a original), enquanto versões com ! (quando existem) tendem a modificar a string em si.

MétodoO que fazExemplo
upcaseMaiúsculas"ruby".upcase #=> "RUBY"
downcaseMinúsculas"RuBy".downcase #=> "ruby"
stripRemove espaços nas pontas" oi ".strip #=> "oi"
splitDivide em partes"a,b,c".split(",") #=> ["a","b","c"]
gsubSubstitui ocorrências"a-b".gsub("-","/") #=> "a/b"
include?Contém trecho?"ruby".include?("ub") #=> true
start_with?Começa com?"arquivo.txt".start_with?("arq") #=> true

Exemplos rápidos e práticos

entrada = "  RuBy e Strings  "

puts entrada.strip.downcase
# "ruby e strings"

puts "banana".gsub("na", "NA")
# "baNANA"

puts "relatorio_2026.csv".include?(".csv")
# true

puts "relatorio_2026.csv".start_with?("relatorio")
# true

Encadeamento de métodos com legibilidade

Encadear métodos é comum, mas precisa ser legível. Uma boa prática é quebrar em etapas com variáveis intermediárias quando a cadeia ficar grande, ou alinhar em múltiplas linhas usando parênteses.

Encadeamento curto (ok)

nome = "  aNa  "
normalizado = nome.strip.capitalize
puts normalizado  # "Ana"

Encadeamento mais longo (prefira organizar)

linha = "  Ana , 28 , SP  "

partes = linha.split(",")
partes = partes.map { |p| p.strip }

nome = partes[0]
idade = partes[1]
uf = partes[2]

puts "Nome=#{nome} | Idade=#{idade} | UF=#{uf}"

Mesmo quando você sabe encadear tudo em uma linha, separar em passos facilita manutenção e depuração.

Parsing simples: separando um CSV básico com split

Um CSV “básico” pode ser tratado como linhas separadas por \n e colunas separadas por vírgula. Isso funciona bem quando os campos não têm vírgulas internas e não usam aspas para escape (para CSV completo, normalmente se usa uma biblioteca específica).

Passo a passo: ler texto CSV e extrair campos

  • 1) Separe o texto em linhas com split("\n").
  • 2) Para cada linha, separe colunas com split(",").
  • 3) Aplique strip para remover espaços extras.
  • 4) Use os campos para montar uma saída formatada.
csv = "nome,idade,uf\nAna,28,SP\nBruno,35,RJ\nCarla,22,MG"

linhas = csv.split("\n")
header = linhas[0].split(",").map { |c| c.strip }

linhas[1..].each do |linha|
  colunas = linha.split(",").map { |c| c.strip }

  registro = {
    header[0] => colunas[0],
    header[1] => colunas[1],
    header[2] => colunas[2]
  }

  puts "#{registro['nome']} (#{registro['uf']}) - #{registro['idade']} anos"
end

Templates de texto: construindo mensagens de forma consistente

Um “template” é um texto com espaços reservados para valores. Em Ruby, você pode criar templates com interpolação, ou com formatação usando % (estilo printf).

Template com interpolação

template = "Cliente: %{nome} | Plano: %{plano} | Status: %{status}"

dados = { nome: "Ana", plano: "Pro", status: "ativo" }

puts template % dados
# Cliente: Ana | Plano: Pro | Status: ativo

Esse estilo é útil quando você quer um template reaproveitável e valores variáveis.

Formatação numérica com %.2f e alinhamento

Para exibir valores com casas decimais e alinhar colunas, a formatação com % é prática.

itens = [
  { nome: "Café", preco: 19.9, qtd: 2 },
  { nome: "Pão",  preco:  7.5, qtd: 1 }
]

puts "% -10s %5s %8s" % ["Item", "Qtd", "Total"]

itens.each do |i|
  total = i[:preco] * i[:qtd]
  puts "% -10s %5d %8.2f" % [i[:nome], i[:qtd], total]
end

Substituições com gsub para “limpar” entradas

gsub é muito usado para normalizar texto: remover caracteres indesejados, trocar separadores, padronizar formatos.

Exemplo: normalizar um identificador

entrada = "  Pedido #123-ABC  "

normalizado = entrada.strip.downcase
normalizado = normalizado.gsub("#", "")
normalizado = normalizado.gsub("-", "_")
normalizado = normalizado.gsub(" ", "_")

puts normalizado
# "pedido_123_abc"

Checagens rápidas: include? e start_with?

Esses métodos ajudam a validar formatos simples sem precisar de lógica extensa.

arquivo = "relatorio_final.csv"

if arquivo.downcase.end_with?(".csv")
  puts "Parece um CSV"
end

texto = "Erro: conexão expirou"

if texto.start_with?("Erro:")
  puts "Mensagem de erro detectada"
end

Agora responda o exercício sobre o conteúdo:

Ao montar um texto grande em Ruby, qual opção descreve corretamente a diferença entre usar + e usar << para concatenar strings?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Em Ruby, + gera uma nova string com o resultado da concatenação, enquanto << altera a própria string existente, sendo útil para construir textos grandes sem recriar objetos a cada passo.

Próximo capitúlo

Ruby do Zero: Entrada e Saída no Terminal com Ruby

Arrow Right Icon
Capa do Ebook gratuito Ruby do Zero: Fundamentos, Coleções, Blocos e Organização de Código
24%

Ruby do Zero: Fundamentos, Coleções, Blocos e Organização de Código

Novo curso

21 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.