Menu
CoddyTech

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 classes de caracteres, pode usá-las com string.find() para buscar 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 maneira com padrões e 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: 5

Isso encontra o primeiro dígito na string, que está na posição 5. Você também pode pesquisar o oposto usando classes de caracteres maiúsculas:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- Saída: 1

Aqui, %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 corresponder apenas ao começo 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")
end

Esse padrão verifica se a string começa com uma letra, sendo útil para validar entradas quando determinados formatos são obrigatórios.

Para encontrar um caractere especial em si, como um ponto, escape-o com % ou desative os padrões com uma busca simples (1 para começar no primeiro caractere, true para busca simples):

print(string.find("v1.5", "%."))         -- Saída: 3 3
print(string.find("v1.5", ".", 1, true))  -- Saída: 3 3
print(string.find("v1.5", "."))          -- Saída: 1 1 (. corresponde a qualquer caractere)
challenge icon

Desafio

Fácil

Escreva uma função startsWithLetter que recebe text e retorna 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

Retorno: 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
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Lua online