Introduction aux motifs de chaînes
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 36 sur 54.
Lorsque vous avez utilisé string.gsub() dans la leçon précédente, vous avez recherché du texte exact comme des espaces ou des mots spécifiques. Mais que se passe-t-il si vous avez besoin de trouver « n'importe quel chiffre » ou « n'importe quelle lettre » sans connaître le caractère exact ? C'est là que les motifs de chaîne (string patterns) entrent en jeu.
Les motifs de chaîne en Lua sont un moyen de décrire le type de texte que vous recherchez, plutôt que le texte exact lui-même. Ils sont plus simples que les expressions régulières, mais suffisamment puissants pour la plupart des tâches de traitement de texte.
Lua fournit des codes spéciaux appelés classes de caractères qui correspondent à des catégories de caractères. Voici les plus courants :
%d -- correspond à n'importe quel chiffre (0-9)
%a -- correspond à n'importe quelle lettre (a-z, A-Z)
%s -- correspond à n'importe quel espace blanc (espace, tabulation, saut de ligne)
%w -- correspond à n'importe quel caractère alphanumérique (lettres et chiffres)
%p -- correspond à n'importe quel caractère de ponctuationVoici comment vous pourriez utiliser ces motifs avec string.find() pour localiser le premier chiffre dans une chaîne de caractères :
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Résultat : 6Vous pouvez également utiliser les versions en majuscules de ces classes pour faire correspondre l'opposé. Par exemple, %D correspond à n'importe quel caractère qui n'est pas un chiffre, et %A correspond à n'importe quel caractère qui n'est pas une lettre.
Défi
FacileÉcrivez une fonction containsDigit qui prend text et renvoie si le texte contient au moins un chiffre.
Utilisez string.find() avec la classe de caractères %d pour vérifier si un chiffre existe dans la chaîne.
Paramètres :
text(string) : Le texte dans lequel rechercher des chiffres
Retourne : true si le texte contient au moins un chiffre, false sinon (booléen)
Essayez vous-même
function containsDigit(text)
-- Écrire 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