Intro aux motifs de chaînes
Fait partie de la section Logic & Flow 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)
Aide-mémoire
Les motifs de chaînes (string patterns) en Lua décrivent le type de texte que vous recherchez, plutôt que le texte exact lui-même.
Lua fournit des codes spéciaux appelés classes de caractères qui correspondent à des catégories de caractères :
%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 ponctuationVous pouvez utiliser les versions en majuscules 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.
Utilisation des classes de caractères avec string.find() :
local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position) -- Résultat : 6Essayez 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 Logic & Flow
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