Menu
CoddyTech

string.find()

Fait partie de la section Logique et déroulement du programme du Journey Lua de Coddy. Leçon 37 sur 54.

Maintenant que tu comprends les classes de caractères, tu peux les utiliser avec string.find() pour rechercher des motifs plutôt que du texte exact. Cela ouvre de puissantes possibilités pour la validation et l’analyse de texte.

La fonction string.find() fonctionne de la même manière avec les motifs qu’avec les chaînes littérales. Elle renvoie la position où le motif correspond pour la première fois :

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

Cela trouve le premier chiffre dans la chaîne, qui se trouve à la position 5. Vous pouvez également rechercher l’inverse à l’aide de classes de caractères en majuscules :

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

Ici, %D correspond à tout caractère qui n’est pas un chiffre ; il trouve donc la première lettre à la position 1.

Une tâche de validation courante consiste à vérifier si une chaîne commence par un motif spécifique. Tu peux utiliser l’ancre ^ au début d’un motif pour ne faire correspondre que le début de la chaîne :

local username = "player42"
local startsWithLetter = string.find(username, "^%a")

if startsWithLetter then
    print("Valid username")
else
    print("Username must start with a letter")
end

Ce motif vérifie si la chaîne commence par une lettre, ce qui le rend utile pour la validation des entrées lorsque certains formats sont requis.

Pour trouver un caractère spécial en lui-même, comme un point, échappe-le avec % ou désactive les motifs avec une recherche simple (1 pour commencer au premier caractère, true pour une recherche simple) :

print(string.find("v1.5", "%."))         -- Sortie : 3 3
print(string.find("v1.5", ".", 1, true))  -- Sortie : 3 3
print(string.find("v1.5", "."))          -- Sortie : 1 1 (. correspond à n’importe quel caractère)
challenge icon

Défi

Facile

Écris une fonction startsWithLetter qui prend text et indique si la chaîne commence par une lettre.

Utilise string.find() avec l’ancre ^ et la classe de caractères %a pour vérifier si la chaîne commence par une lettre.

Paramètres :

  • text (string) : La chaîne à valider

Renvoie : true si la chaîne commence par une lettre, false sinon (booléen)

Essayez vous-même

function startsWithLetter(text)
    -- Écrivez le code ici
end
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et déroulement du programme

Entraînez-vous par vous-même : Compilateur Lua en ligne