Menu
CoddyTech

string.find()

Parte de la sección Lógica y flujo 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 muchas posibilidades para la validación y el análisis de texto.

La función string.find() funciona con patrones de la misma manera 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 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: 1

Aquí, %D coincide con cualquier carácter que no sea un dígito, así que encuentra la primera letra en la posición 1.

Una tarea de validación habitual consiste en comprobar si una cadena empieza 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, por lo que resulta útil para validar entradas cuando se requieren ciertos formatos.

Para encontrar un carácter especial en sí, como un punto, puedes escaparlo con % o desactivar los patrones con una búsqueda simple (1 para empezar en el primer carácter, true para una búsqueda simple):

print(string.find("v1.5", "%."))         -- Salida: 3 3
print(string.find("v1.5", ".", 1, true))  -- Salida: 3 3
print(string.find("v1.5", "."))          -- Salida: 1 1 (. coincide con cualquier carácter)
challenge icon

Desafío

Fácil

Escribe una función startsWithLetter que reciba text y devuelva si la cadena empieza con una letra.

Usa string.find() con el ancla ^ y la clase de caracteres %a para comprobar si la cadena empieza con una letra.

Parámetros:

  • text (cadena): La cadena que se va a validar

Devuelve: true si la cadena empieza con una letra, false en caso contrario (booleano)

Pruébalo tú mismo

function startsWithLetter(text)
    -- Escribe 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 Lógica y flujo

Practica por tu cuenta: Compilador de Lua online