string.gsub() para Substituição
Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 35 de 54.
Ao trabalhar com strings, você frequentemente precisa encontrar e substituir texto. A função string.gsub() do Lua torna isso fácil ao realizar substituição global—encontrando todas as ocorrências de um padrão e substituindo-as por outra coisa.
A sintaxe básica recebe três argumentos: a string original, o padrão a ser encontrado e o texto de substituição:
local result = string.gsub(originalString, pattern, replacement)Aqui está um exemplo simples que substitui todos os espaços por sublinhados:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- Saída: hello_world_from_luaA função retorna dois valores: a string modificada e o número de substituições feitas. Você pode capturar ambos se necessário:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- Saída: baz bar baz
print(count) -- Saída: 2Ao contrário de algumas funções de string que encontram apenas a primeira correspondência, string.gsub() substitui todas as ocorrências por padrão, tornando-a perfeita para tarefas de limpeza de texto, como remover caracteres indesejados ou padronizar a formatação.
Desafio
FácilEscreva uma função cleanText que recebe text e retorna uma versão limpa com todos os espaços substituídos por sublinhados.
Use string.gsub() para substituir cada caractere de espaço no texto por um caractere de sublinhado.
Parâmetros:
text(string): O texto para limpar
Retorno: O texto com todos os espaços substituídos por sublinhados (string)
Folha de consulta
A função string.gsub() realiza a substituição global ao encontrar todas as ocorrências de um padrão e substituí-las:
local result = string.gsub(originalString, pattern, replacement)Exemplo substituindo espaços por sublinhados:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- Saída: hello_world_from_luaA função retorna dois valores: a string modificada e o número de substituições realizadas:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- Saída: baz bar baz
print(count) -- Saída: 2O string.gsub() substitui todas as ocorrências por padrão, não apenas a primeira correspondência.
Experimente você mesmo
function cleanText(text)
-- Escreva o código aqui
end
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
1Iteração Avançada de Tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de Personagem4Introdução às Metatabelas
O que é uma Metatabela?setmetatable & getmetatableO Metamétodo __indexO Metamétodo __newindexO Metamétodo __tostringMetamétodos Aritméticos Parte 1Metamétodos Aritméticos Parte 2Recapitulação - Tabela Somente Leitura7Manipulação Avançada de Strings
string.gsub() para SubstituiçãoIntrodução a Padrões de Stringstring.find()string.match()Iteração com string.gmatch()Recapitulação - Parser de Arquivos de Log2Mais Funções da Biblioteca Table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRecapitulação - Placar de recordes