Menu
CoddyTech

string.find()

Fait partie de la section Notions fondamentales du Journey Lua de Coddy. Leçon 48 sur 90.

La fonction string.find() est un outil puissant pour effectuer des recherches dans des chaînes de caractères. Elle vous permet de rechercher une chaîne plus courte (appelée motif) à l’intérieur d’une chaîne plus longue et vous indique précisément où elle a été trouvée.

Voici la syntaxe de base :

string.find(text, pattern)

Lorsque string.find() localise le motif avec succès, il renvoie deux nombres : la position de début et la position de fin de la correspondance. Si le motif n’est pas trouvé, il renvoie nil.

Voici un exemple simple :

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- affiche : 5 12

Dans cet exemple, le mot « treasure » commence à la position 5 et se termine à la position 12 dans la phrase.

Une chose à savoir : le texte que tu recherches est un motif, et non du texte brut. Quelques caractères ont une signification particulière dans les motifs : . % - + * ? [ ] ^ $ ( ). Tu les découvriras plus tard dans le cours. Les lettres, les chiffres et les espaces correspondent à eux-mêmes, comme dans l’exemple ci-dessus, mais un caractère spécial peut correspondre à davantage que ce que tu voulais :

print(string.find("Score: 105", "1.5"))  -- affiche : 8 10 (le . correspond au 0)

Pour rechercher le texte exactement tel qu’il est écrit, ajoutez deux arguments supplémentaires : 1 (commencer au premier caractère) et true (une recherche simple, sans caractères spéciaux) :

print(string.find("Score: 105", "1.5", 1, true))   -- affiche : nil
print(string.find("Version 1.5", "1.5", 1, true))  -- affiche : 9 11
challenge icon

Défi

Facile

Crée un détecteur de messages secrets qui recherche un mot-code caché dans un message texte plus long. Déclare une variable appelée message et attribue-lui la valeur "The ancient treasure lies beneath the old oak tree". Utilise la fonction string.find() pour rechercher le mot "treasure" dans le message et stocke les positions de début et de fin dans des variables appelées startPos et endPos. Affiche les deux valeurs de position sur des lignes distinctes.

Essayez vous-même

-- Déclarez la variable message
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: Écrivez votre code ici pour trouver le mot "treasure" et enregistrer les positions

-- Affichez les positions
print(startPos)
print(endPos)
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 Notions fondamentales

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