Menu
Coddy logo textTech

Introducción a patrones de cadenas

Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 36 de 54.

Cuando usaste string.gsub() en la lección anterior, buscaste texto exacto como espacios o palabras específicas. Pero, ¿qué pasa si necesitas encontrar "cualquier dígito" o "cualquier letra" sin conocer el carácter exacto? Aquí es donde entran en juego los patrones de cadenas.

Los patrones de cadenas en Lua son una forma de describir qué tipo de texto estás buscando, en lugar del texto exacto en sí. Son más simples que las expresiones regulares, pero lo suficientemente potentes para la mayoría de las tareas de procesamiento de texto.

Lua proporciona códigos especiales llamados clases de caracteres que coinciden con categorías de caracteres. Aquí están los más comunes:

%d  -- coincide con cualquier dígito (0-9)
%a  -- coincide con cualquier letra (a-z, A-Z)
%s  -- coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea)
%w  -- coincide con cualquier carácter alfanumérico (letras y dígitos)
%p  -- coincide con cualquier carácter de puntuación

Aquí tienes cómo podrías usar estos patrones con string.find() para localizar el primer dígito en una cadena:

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

También puedes usar versiones en mayúsculas de estas clases para que coincidan con lo opuesto. Por ejemplo, %D coincide con cualquier carácter que no sea un dígito, y %A coincide con cualquier carácter que no sea una letra.

challenge icon

Desafío

Fácil

Escribe una función containsDigit que recibe text y devuelve si el texto contiene al menos un dígito.

Usa string.find() con la clase de caracteres %d para comprobar si existe algún dígito en la cadena.

Parámetros:

  • text (string): El texto en el que buscar dígitos

Devuelve: true si el texto contiene al menos un dígito, false en caso contrario (boolean)

Hoja de referencia

Los patrones de cadenas en Lua describen qué tipo de texto estás buscando, en lugar del texto exacto en sí.

Lua proporciona códigos especiales llamados clases de caracteres que coinciden con categorías de caracteres:

%d  -- matches any digit (0-9)
%a  -- matches any letter (a-z, A-Z)
%s  -- matches any whitespace (space, tab, newline)
%w  -- matches any alphanumeric character (letters and digits)
%p  -- matches any punctuation character

Puedes usar versiones en mayúsculas para coincidir con lo opuesto. Por ejemplo, %D coincide con cualquier carácter que no sea un dígito, y %A coincide con cualquier carácter que no sea una letra.

Uso de clases de caracteres con string.find():

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

Pruébalo tú mismo

function containsDigit(text)
    -- Escribe el código aquí
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow