Menu
Coddy logo textTech

string.find()

Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 37 de 54.

Agora que você entende as classes de caracteres, você 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 forma com padrões como faz com strings literais—ela retorna a posição onde o padrão coincide 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 pelo oposto usando classes de caracteres em 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 ele 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 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")
end

Este padrão verifica se a string começa com uma letra, tornando-o útil para validação de entrada onde certos formatos são necessários.

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

Retorna: true se a string começar com uma letra, false caso contrário (booleano)

Folha de consulta

Use string.find() com classes de caracteres para procurar padrões em strings. Ele retorna a posição onde o padrão coincide pela primeira vez:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- Saída: 5

Classes de caracteres em maiúsculas correspondem ao oposto (caracteres que não coincidem):

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

Use a âncora ^ no início de um padrão para coincidir apenas com o 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

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 Logic & Flow