Itérer avec string.gmatch()
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 39 sur 54.
Bien que string.match() trouve la première occurrence d’un motif, que faire si tu dois trouver toutes les correspondances dans une chaîne ? La fonction string.gmatch() résout ce problème en renvoyant un itérateur que tu peux utiliser dans une boucle for pour traiter chaque correspondance une par une.
La syntaxe de base se présente ainsi :
for match in string.gmatch(text, pattern) do
-- traite chaque match
endVoici un exemple qui trouve tous les nombres dans une chaîne de caractères :
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- Sortie :
-- 3
-- 5Le motif %d+ correspond à un ou plusieurs chiffres, et la boucle s’exécute une fois pour chaque nombre trouvé.
Vous pouvez également extraire tous les mots d’une phrase :
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Sortie :
-- Lua
-- is
-- a
-- powerful
-- languageDéfi
FacileÉcris une fonction extractHashtags qui prend text et renvoie tous les hashtags trouvés dans le texte, chacun sur une ligne distincte.
Utilise string.gmatch() pour trouver tous les hashtags dans le texte. Un hashtag commence par # suivi d’une ou plusieurs lettres.
Logique :
- Utilise
string.gmatch()avec le motif"#%a+"pour trouver tous les hashtags - Parcours chaque correspondance et collecte-les
- Relie tous les hashtags avec des caractères de nouvelle ligne (
\n) - Si aucun hashtag n’est trouvé, renvoie une chaîne vide
Paramètres :
text(chaîne) : Le texte dans lequel rechercher des hashtags
Renvoie : Tous les hashtags trouvés, chacun sur une ligne distincte. S’il n’existe aucun hashtag, renvoie une chaîne vide (chaîne)
Essayez vous-même
function extractHashtags(text)
-- Écrivez le code ici
end
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 flux
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() contre ipairs()Récapitulatif - Fiche de personnage4Introduction aux métatables
Qu’est-ce qu’une métatable ?setmetatable et getmetatableLa metaméthode __indexLa metaméthode __newindexLa metaméthode __tostringMétaméthodes arithmétiques - Partie 1Métaméthodes arithmétiques - Partie 2Récapitulatif - Table en lecture seule7Manipulation avancée des chaînes
string.gsub() pour la substitutionIntroduction aux motifs de chaînesstring.find()string.match()Itérer avec string.gmatch()Récapitulatif - Analyseur de fichiers journaux2Fonctions supplémentaires de la bibliothèque table
table.concat()construction de tables et unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des meilleurs scores3Concepts avancés des fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu’est-ce qu’une fermeture ?Récapitulatif - Gestionnaire d’événements simpleEntraînez-vous par vous-même : Compilateur Lua en ligne