Itération avec string.gmatch()
Fait partie de la section Logique et flux du Journey Lua de Coddy — leçon 39 sur 54.
Alors que string.match() trouve la première occurrence d'un motif, que se passe-t-il si vous avez besoin de trouver toutes les correspondances dans une chaîne de caractères ? La fonction string.gmatch() résout cela en renvoyant un itérateur que vous pouvez utiliser dans une boucle for pour traiter chaque correspondance une par une.
La syntaxe de base ressemble à ceci :
for match in string.gmatch(text, pattern) do
-- traiter chaque correspondance
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Écrivez une fonction extractHashtags qui prend text et renvoie tous les hashtags trouvés dans le texte, chacun sur une ligne séparée.
Utilisez string.gmatch() pour trouver tous les hashtags dans le texte. Un hashtag commence par # suivi d'une ou plusieurs lettres.
Logique :
- Utilisez
string.gmatch()avec le motif"#%a+"pour trouver tous les hashtags - Parcourez chaque correspondance et collectez-les
- Joignez tous les hashtags avec des caractères de nouvelle ligne (
\n) - Si aucun hashtag n'est trouvé, renvoyez une chaîne vide
Paramètres :
text(string) : Le texte dans lequel rechercher des hashtags
Retourne : Tous les hashtags trouvés, chacun sur une ligne séparée. Si aucun hashtag n'existe, renvoyez une chaîne vide (string)
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() vs. ipairs()Récapitulatif - Fiche de personnage4Introduction aux Metatables
Qu'est-ce qu'une Metatable ?setmetatable & getmetatableLa métaméthode __indexLa métaméthode __newindexLa métaméthode __tostringMétaméthodes arithmétiques - Partie 1Métaméthodes arithmétiques - Partie 2Récapitulatif - Table en lecture seule7Manipulation avancée de chaînes
string.gsub() pour la substitutionIntro aux motifs de chaînesstring.find()string.match()Itération avec string.gmatch()Récapitulatif - Analyseur de fichiers de log2Plus de fonctions de la bibliothèque table
table.concat()Construction de table & unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des scores3Concepts avancés sur les fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu'est-ce qu'une closure ?Récapitulatif - Gestionnaire d'événements simple