string.find()
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 37 de 54.
Agora que você entende as classes de caracteres, pode usá-las com string.find() para pesquisar padrões em vez de texto exato. Isso abre possibilidades poderosas para validação e análise de texto.
A função string.find() funciona da mesma forma com padrões que com strings literais. Ela retorna a posição em que o padrão corresponde pela primeira vez:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Saída: 5Isso encontra o primeiro dígito na string, que está na posição 5. Você também pode pesquisar o oposto usando classes de caracteres em letras maiúsculas:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Saída: 1Aqui, %D corresponde a qualquer caractere que não seja um dígito, então encontra a primeira letra na posição 1.
Uma tarefa comum de validação é verificar se uma string começa com um padrão específico. Você pode usar a âncora ^ no início de um padrão para fazer a correspondência somente no início da string:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endEsse padrão verifica se a string começa com uma letra, tornando-o útil para a validação de entradas em que determinados formatos são necessários.
Desafio
FácilEscreva uma função startsWithLetter que receba text e retorne se a string começa com uma letra.
Use string.find() com a âncora ^ e a classe de caracteres %a para verificar se a string começa com uma letra.
Parâmetros:
text(string): A string a ser validada
Retorna: true se a string começar com uma letra, false caso contrário (booleano)
Experimente você mesmo
function startsWithLetter(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