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:\tempAspas 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 2Interpolaçã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 decimaisEscape: quando você precisa “escapar” caracteres
Escape é escrever uma sequência para representar um caractere especial dentro da string.
- Ouça o áudio com a tela desligada
- Ganhe Certificado após a conclusão
- + de 5000 cursos para você explorar!
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 msgUsando << (concatena na mesma string)
<< modifica o objeto original (útil para montar textos grandes).
texto = ""
texto << "Linha 1"
texto << " | "
texto << "Linha 2"
puts textoUsando join (ideal para listas)
partes = ["Ruby", "Strings", "na", "Prática"]
puts partes.join(" ")
# Saída: Ruby Strings na PráticaMé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étodo | O que faz | Exemplo |
|---|---|---|
upcase | Maiúsculas | "ruby".upcase #=> "RUBY" |
downcase | Minúsculas | "RuBy".downcase #=> "ruby" |
strip | Remove espaços nas pontas | " oi ".strip #=> "oi" |
split | Divide em partes | "a,b,c".split(",") #=> ["a","b","c"] |
gsub | Substitui 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")
# trueEncadeamento 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
strippara 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"
endTemplates 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: ativoEsse 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]
endSubstituiçõ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