Initiation au Lua avec Scribunto/Exercices/Sur les chaînes de caractères
Exercice 6-1
[modifier | modifier le wikicode]Écrire une fonction qui met une majuscule au début d'une phrase écrite en minuscule.
local p = {}
function p.majuscule(frame)
local phrase = frame.args[1]
local debut = string.sub(phrase,1,1) --Extrait la première lettre de la phrase
local fin = string.sub(phrase,2) --Extrait la fin de la phrase (sans la première lettre)
return string.upper(debut)..string.lower(fin) -- Reconstruit la phrase avec la première lettre en majuscule, le reste en minuscule
end
return p
Exercice 6-2
[modifier | modifier le wikicode]Écrire une fonction p.comptemot qui retourne le nombre de mots dans une phrase que l’on aura rentrée en argument.
Cette fonction se trouve dans le Module:Phrase :
local p = {}
function p.comptemot(frame)
local phrase = frame.args[1]
local compte = 1 --La phrase existant, il y a au moins un mot
for i = 1, #phrase do
if string.sub(phrase,i,i) == " " then compte = compte + 1 end --Chaque espace rencontré sous entends un mot de plus
end
return compte
end
return p
{{#invoke:Phrase|comptemot|Ceci est une phrase dont on compte les mots}} nous donne : 9
Exercice 6-3
[modifier | modifier le wikicode]Écrire une fonction p.compte qui compte combien de fois on trouve le mot chaud, le prénom "Serge" et la suite de voyelle "ai" dans la chaîne de caractères (facile à prononcer) :
"J’ai chaud, j’ai si chaud. Il fait si chaud chez ce cher Serge. Serge, soit chic ! Baisse le chauffage."
Contrainte : On utilisera seulement la fonction préprogrammée string.find.
Cette fonction se trouve dans le Module:Phrase :
local p = {}
function p.compte(frame)
local phrase = "J’ai chaud, j’ai si chaud. Il fait si chaud chez ce cher Serge. Serge, soit chic ! Baisse le chauffage."
local item = frame.args[1]
local compte,position = 0,0
repeat
position = string.find(phrase,item,position+1)
if position then
compte = compte + 1
end
until position == nil
return "Nombre d'occurrences = "..compte
end
return p
{{#invoke:Phrase|compte|chaud}} nous donne : Nombre d'occurrences = 3
{{#invoke:Phrase|compte|Serge}} nous donne : Nombre d'occurrences = 2
{{#invoke:Phrase|compte|ai}} nous donne : Nombre d'occurrences = 4
Exercice 6-4
[modifier | modifier le wikicode](à compléter)
Cette solution n'a pas été rédigée. Vous pouvez le faire en modifiant le paramètre « contenu
» du modèle. Comment faire ?