Aller au contenu

Introduction au Lua/Fonctions Texte

Leçons de niveau 12
Une page de Wikiversité, la communauté pédagogique libre.
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.
Début de la boite de navigation du chapitre
Fonctions Texte
Icône de la faculté
Chapitre no 14
Leçon : Introduction au Lua
Chap. préc. :Fonctions OS
Chap. suiv. :Fonctions Table
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au Lua : Fonctions Texte
Introduction au Lua/Fonctions Texte
 », n'a pu être restituée correctement ci-dessus.


Un module Lua-Scribunto pour Mediawiki, est une page de l'espace de nom "Module" qui utilise une table comme variable locale pour stocker ses fonctions et variables mais aussi pour renvoyer la réponse à la fin du processus[1].

Le chapitre bibliothèques Lua, étudie les fonctions intégrées au langage et communément regroupées en librairies ou bibliothèques. Cette leçon vous apprendra comment utiliser les fonctions de la librairie de manipulation de chaînes Lua, dans vos scripts.

Prérequis

Cette leçon suppose que vous ayez assimilé la leçon Tables.

Utiliser les fonctions de manipulation de chaines de caractères

  1. Accéder au Module:Sandbox.
  2. Supprimer le code existant.
  3. Ajouter le code suivant et enregistrer la page:
local p = {}
 
function p.byte()
    return ';byte\n:string.byte(\'A\') is ' .. string.byte('A') .. '\n'
end
 
function p.char()
    return ';char\n:string.char(65) is ' .. string.char(65) .. '\n'
end
 
function p.find()
    return ';find\n:string.find(\'that\', \'at\') is ' .. string.find('that', 'at') .. '\n'
end
 
function p.format()
    return ';format\n:string.format(\'%.2f\', 0) is ' .. string.format('%.2f', 0) .. '\n'
end
 
function p.gmatch()
	result = ''
    for each in string.gmatch('this is a test', 't%a+') do
    	result = result ..  each .. ', '
    end
    return ';gmatch\n:string.gmatch(\'this is a test\', \'t%a+\') is ' .. result .. '\n'
end
 
function p.gsub()
    return ';gsub\n:string.gsub(\'This is a test\', \'%s\', \'-\') is ' .. string.gsub('This is a test', '%s', '-') .. '\n'
end
 
function p.len()
    return ';len\n:string.len(\'len\') is ' .. string.len('len') .. '\n'
end
 
function p.lower()
    return ';lower\n:string.lower(\'LOWER\') is ' .. string.lower('LOWER') .. '\n'
end
 
function p.match()
    return ';match\n:string.match(\'This is a test!\', \'.\', -1) is ' .. string.match('This is a test!', '.', -1) .. '\n'
end
 
function p.rep()
    return ';rep\n:string.rep(\'*\', 5) is ' .. string.rep('*', 5) .. '\n'
end
 
function p.reverse()
    return ';reverse\n:string.reverse(\'reverse\') is ' .. string.reverse('reverse') .. '\n'
end
 
function p.sub()
    return ';sub\n:string.sub(\'that\', 2, 3) is ' .. string.sub('that', 2, 3) .. '\n'
end
 
function p.upper()
    return ';upper\n:string.upper(\'upper\') is ' .. string.upper('upper') .. '\n'
end
 
return p

Tester votre nouveau script

  1. Rendez-vous sur "votre page de test".
  2. Ajouter le code suivant et enregistrer la page:
{{#invoke:Sandbox|byte}}
{{#invoke:Sandbox|char}}
{{#invoke:Sandbox|find}}
{{#invoke:Sandbox|format}}
{{#invoke:Sandbox|gmatch}}
{{#invoke:Sandbox|gsub}}
{{#invoke:Sandbox|len}}
{{#invoke:Sandbox|lower}}
{{#invoke:Sandbox|match}}
{{#invoke:Sandbox|rep}}
{{#invoke:Sandbox|reverse}}
{{#invoke:Sandbox|sub}}
{{#invoke:Sandbox|upper}}

Le résultat doit correspondre à ceci

byte
string.byte('A') is 65
char
string.char(65) is A
find
string.find('that', 'at') is 3
format
string.format('%.2f', 0) is 0.00
gmatch
string.gmatch('this is a test', 't%a+') is this, test,
gsub
string.gsub('This is a test', '%s', '-') is This-is-a-test
len
string.len('len') is 3
lower
string.lower('LOWER') is lower
match
string.match('This is a test!', 'test') is test
rep
string.rep('*', 5) is *****
reverse
string.reverse('reverse') is esrever
sub
string.sub('that', 2, 3) is ha
upper
string.upper('upper') is UPPER

Comprendre votre nouveau script

  1. string.byte('A') retourne le code numérique de la valeur ASCII du(es) caractère(s) dans la chaine.
  2. string.char(65) retourne le caractère correspondant à la valeur numérique ASCII donnée.
  3. string.find('that', 'at') retourne la position en valeur numérique de la seconde chaine à l’intérieur de la première, retourne nil si la seconde chaine est absente.
  4. string.format('%.2f', 0) retourne le second argument formaté selon le premier argument.
    Voir fprintf pour les spécifications de formatage.
  5. for each in string.gmatch('This is a test', 't%a+') do cherche les occurrences du texte indiqué au second paramètre dans la chaine indiquée au premier paramètre. Dans notre exemple l'expression régulière 't%a+' désigne n'importe quel occurrence commençant par un "t" suivi par un nombre quelconque de caractère alphabétique "%a+".
    Voir Motifs dans le manuel de référence Scribunto pour la prise en charge des expressions régulières.
  6. string.gsub('This is a test', '%s', '-') retourne la chaine de caractère indiquée au premier argument en remplaçant chaque occurrence indiquée au second argument par la chaine indiquée en troisième argument. Notre exemple utilise une expression régulière où '%s' représente un espace, que nous remplaçons par un tiret '-'.
    Voir Motifs dans le manuel de référence Scribunto pour la prise en charge des expressions régulières.
  7. string.len('len') retourne la longueur (la taille) de la chaine en nombre de caractères.
  8. string.lower('LOWER') retourne la chaine convertie en caractère minuscule.
  9. string.match('This is a test!', 'test') cherche la première occurrence de la chaine indiquée en second paramètre dans la chaine indiquée au premier paramètre ; Retourne la chaine quand le résultat de la recherche est positif ou "nil" si le résultat de la recherche est négatif. Le seconde paramètre permet d'utiliser des expressions régulières, le troisième paramètre permet d'indiquer le point départ de la recherche.
    Voir Motifs dans le manuel de référence Scribunto pour la prise en charge des expressions régulières.
  10. string.rep('*', 5) retourne la chaine indiquée au premier paramètre, et répète l'opération le nombre de fois indiqué au second paramètre.
  11. string.reverse('reverse') retourne la chaine inversée.
  12. string.sub('that', 2, 3) retourne la "sous-chaine" contenue dans la chaine indiquée au premier paramètre ; commençant au second paramètre et terminant au troisième paramètre.
  13. string.upper('upper') retourne la chaine convertie en caractère minuscule .

Conclusion

Félicitation! Vous êtes capable de créer, tester et comprendre un script Lua qui contient des fonctions de manipulation de chaines de caractères. Continuez en choisissant l'étude d'une nouvelle bibliothèque de fonctions.

Voir aussi

Références

Lua for Wikiversity (en)