string.find()
Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy. Lección 37 de 54.
Ahora que entiendes las clases de caracteres, puedes usarlas con string.find() para buscar patrones en lugar de texto exacto. Esto abre posibilidades muy útiles para la validación y el análisis de texto.
La función string.find() funciona de la misma manera con patrones que con cadenas literales. Devuelve la posición en la que el patrón coincide por primera vez:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Salida: 5Esto encuentra el primer dígito de la cadena, que está en la posición 5. También puedes buscar lo contrario usando clases de caracteres en mayúsculas:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Salida: 1Aquí, %D coincide con cualquier carácter que no sea un dígito, por lo que encuentra la primera letra en la posición 1.
Una tarea común de validación es comprobar si una cadena comienza con un patrón específico. Puedes usar el ancla ^ al principio de un patrón para hacer coincidir únicamente el inicio de la cadena:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endEste patrón comprueba si la cadena comienza con una letra, lo que lo hace útil para la validación de entradas cuando se requieren ciertos formatos.
Desafío
FácilEscribe una función startsWithLetter que tome text y devuelva si la cadena comienza con una letra.
Usa string.find() con el ancla ^ y la clase de caracteres %a para comprobar si la cadena comienza con una letra.
Parámetros:
text(cadena): La cadena que se validará
Devuelve: true si la cadena comienza con una letra, false en caso contrario (booleano)
Pruébalo tú mismo
function startsWithLetter(text)
-- Escribe el código aquí
end
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo de control
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje4Introducción a las Metatablas
¿Qué es una Metatabla?setmetatable y getmetatableEl metamétodo __indexEl metamétodo __newindexEl metamétodo __tostringMetamétodos aritméticos - Parte 1Metamétodos aritméticos - Parte 2Resumen - Tablas de solo lectura7Manipulación avanzada de cadenas
string.gsub() para sustituciónIntroducción a patrones de cadenasstring.find()string.match()Iteración con string.gmatch()Resumen - Analizador de archivos Log2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altasPractica por tu cuenta: Compilador de Lua online