Menu
Coddy logo textTech

Introdução a Padrões de String

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

Quando você usou string.gsub() na lição anterior, você procurou por texto exato como espaços ou palavras específicas. Mas e se você precisar encontrar "qualquer dígito" ou "qualquer letra" sem saber o caractere exato? É aqui que entram os padrões de string.

Padrões de string em Lua são uma forma de descrever que tipo de texto você está procurando, em vez do texto exato em si. Eles são mais simples que expressões regulares, mas poderosos o suficiente para a maioria das tarefas de processamento de texto.

Lua fornece códigos especiais chamados classes de caracteres que correspondem a categorias de caracteres. Aqui estão os mais comuns:

%d  -- corresponde a qualquer dígito (0-9)
%a  -- corresponde a qualquer letra (a-z, A-Z)
%s  -- corresponde a qualquer espaço em branco (espaço, tabulação, nova linha)
%w  -- corresponde a qualquer caractere alfanumérico (letras e dígitos)
%p  -- corresponde a qualquer caractere de pontuação

Veja como você pode usar esses padrões com string.find() para localizar o primeiro dígito em uma string:

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- Saída: 6

Você também pode usar versões em maiúsculas dessas classes para corresponder ao oposto. Por exemplo, %D corresponde a qualquer caractere que não seja um dígito, e %A corresponde a qualquer caractere que não seja uma letra.

challenge icon

Desafio

Fácil

Escreva uma função containsDigit que recebe text e retorna se o texto contém pelo menos um dígito.

Use string.find() com a classe de caracteres %d para verificar se existe algum dígito na string.

Parâmetros:

  • text (string): O texto para verificar a presença de dígitos

Retorna: true se o texto contiver pelo menos um dígito, false caso contrário (boolean)

Folha de consulta

Padrões de string em Lua descrevem que tipo de texto você está procurando, em vez do texto exato em si.

Lua fornece códigos especiais chamados classes de caracteres que correspondem a categorias de caracteres:

%d  -- corresponde a qualquer dígito (0-9)
%a  -- corresponde a qualquer letra (a-z, A-Z)
%s  -- corresponde a qualquer espaço em branco (espaço, tabulação, nova linha)
%w  -- corresponde a qualquer caractere alfanumérico (letras e dígitos)
%p  -- corresponde a qualquer caractere de pontuação

Você pode usar versões em maiúsculas para corresponder ao oposto. Por exemplo, %D corresponde a qualquer caractere que não seja um dígito, e %A corresponde a qualquer caractere que não seja uma letra.

Usando classes de caracteres com string.find():

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- Saída: 6

Experimente você mesmo

function containsDigit(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