Menu
Coddy logo textTech

string.find()

Parte de la sección Logic & Flow 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 poderosas 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 donde el patrón coincide por primera vez:

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

Esto busca el primer dígito en la cadena, que se encuentra en la posición 5. También puedes buscar lo opuesto utilizando clases de caracteres en mayúsculas:

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

Aquí, %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 de validación común es comprobar si una cadena comienza con un patrón específico. Puedes usar el ancla ^ al principio de un patrón para que coincida solo al 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")
end

Este patrón comprueba si la cadena comienza con una letra, lo que lo hace útil para la validación de entradas donde se requieren ciertos formatos.

challenge icon

Desafío

Fácil

Escribe una función startsWithLetter que reciba 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 (string): La cadena a validar

Devuelve: true si la cadena comienza con una letra, false de lo contrario (boolean)

Hoja de referencia

Usa string.find() con clases de caracteres para buscar patrones en cadenas. Devuelve la posición donde el patrón coincide por primera vez:

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

Las clases de caracteres en mayúsculas coinciden con lo opuesto (caracteres que no coinciden):

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

Usa el ancla ^ al principio de un patrón para que coincida solo al 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")
end

Pruébalo tú mismo

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