Menu
Coddy logo textTech

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 ponctuation

Voici 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 : 6

Vous 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.

challenge icon

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 ponctuation

Vous 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 : 6

Essayez vous-même

function containsDigit(text)
    -- Écrire le code ici
end
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 Logic & Flow