Introduction au Lua/Fonctions Texte

Début de la boite de navigation du chapitre

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

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.


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 modifier

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

Utiliser les fonctions de manipulation de chaines de caractères modifier

  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 modifier

  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 modifier

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 modifier

  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 modifier

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 modifier

Références modifier

Lua for Wikiversity (en)