Iterando com string.gmatch()
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 39 de 54.
Embora string.match() encontre a primeira ocorrência de um padrão, e se você precisar encontrar todas as correspondências em uma string? A função string.gmatch() resolve isso retornando um iterador que você pode usar em um loop for para processar cada correspondência uma por uma.
A sintaxe básica é assim:
for match in string.gmatch(text, pattern) do
-- processa cada correspondência
endAqui está um exemplo que encontra todos os números em uma string:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Saída:
-- 3
-- 5O padrão %d+ corresponde a um ou mais dígitos, e o loop é executado uma vez para cada número encontrado.
Você também pode extrair todas as palavras de uma frase:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Saída:
-- Lua
-- is
-- a
-- powerful
-- languageDesafio
FácilEscreva uma função extractHashtags que receba text e retorne todas as hashtags encontradas no texto, cada uma em uma linha separada.
Use string.gmatch() para encontrar todas as hashtags no texto. Uma hashtag começa com # seguido por uma ou mais letras.
Lógica:
- Use
string.gmatch()com o padrão"#%a+"para encontrar todas as hashtags - Itere por cada correspondência e colete-as
- Una todas as hashtags com caracteres de nova linha (
\n) - Se nenhuma hashtag for encontrada, retorne uma string vazia
Parâmetros:
text(string): O texto no qual procurar hashtags
Retorno: Todas as hashtags encontradas, cada uma em uma linha separada. Se não houver hashtags, retorne uma string vazia (string)
Experimente você mesmo
function extractHashtags(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 Lógica e Fluxo
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 e getmetatableO Metamétodo __indexO Metamétodo __newindexO Metamétodo __tostringMetamétodos Aritméticos — Parte 1Metamétodos Aritméticos — Parte 2Recapitulação — Tabela Somente para Leitura7Manipulação Avançada de Strings
string.gsub() para SubstituiçãoIntrodução aos Padrões de Stringsstring.find()string.match()Iterando com string.gmatch()Recapitulação - Analisador de Arquivos de Log2Mais funções da biblioteca table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRevisão - Placar de pontuações máximasPratique por conta própria: Compilador de Lua online