string.gsub() pour la substitution
Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 35 sur 54.
Lorsque vous travaillez avec des chaînes de caractères, vous avez souvent besoin de rechercher et de remplacer du texte. La fonction string.gsub() de Lua facilite cette tâche en effectuant une substitution globale — en trouvant toutes les occurrences d'un motif et en les remplaçant par autre chose.
La syntaxe de base prend trois arguments : la chaîne d'origine, le motif à rechercher et le texte de remplacement :
local result = string.gsub(originalString, pattern, replacement)Voici un exemple simple qui remplace tous les espaces par des tirets bas :
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- Résultat : hello_world_from_luaLa fonction renvoie deux valeurs : la chaîne modifiée et le nombre de remplacements effectués. Vous pouvez capturer les deux si nécessaire :
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- Sortie : baz bar baz
print(count) -- Sortie : 2Contrairement à certaines fonctions de chaîne qui ne trouvent que la première correspondance, string.gsub() remplace chaque occurrence par défaut, ce qui la rend parfaite pour les tâches de nettoyage de texte comme la suppression de caractères indésirables ou la standardisation du formatage.
Défi
FacileÉcrivez une fonction cleanText qui prend text et renvoie une version nettoyée avec tous les espaces remplacés par des underscores.
Utilisez string.gsub() pour remplacer chaque caractère d'espace dans le texte par un caractère underscore.
Paramètres :
text(string) : Le texte à nettoyer
Retourne : Le texte avec tous les espaces remplacés par des underscores (string)
Aide-mémoire
La fonction string.gsub() effectue une substitution globale en trouvant toutes les occurrences d'un motif et en les remplaçant :
local result = string.gsub(originalString, pattern, replacement)Exemple de remplacement des espaces par des tirets bas :
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- Résultat : hello_world_from_luaLa fonction retourne deux valeurs : la chaîne modifiée et le nombre de remplacements effectués :
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- Résultat : baz bar baz
print(count) -- Résultat : 2string.gsub() remplace chaque occurrence par défaut, pas seulement la première correspondance.
Essayez vous-même
function cleanText(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 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