Les strings: Fonctions sur les chaînes de caractères.
Lua fournit tout une gamme de fonctions pour le traitement des strings dans sa bibliothèque standard.
Pour obtenir plus de précisions sur une des fonctions présentes ci-desous, cliquez sur celle de votre choix.
Retourne le code numérique d'un ou plusieurs caractères. ( code ASCII )
print(string.byte("ABCDE"))
-- Retourne la valeur ASCII du premier caractère: 65
print(string.byte("ABCDE", 2))
-- Retourne la valeur ASCII du second caractère: 66
print(string.byte("ABCDE", 1, 5))
-- Retourne la valeur ASCII de tous les caractères: 65 66 67 68 69
Retourne un caractère ou une chaîne à partir de son code ASCII.
print(string.char(65))
-- Retourne le caractère dont le code ASCII est 65: A
print(string.char(67, 108, 97, 117, 100, 101 ))
-- Retourne une string: Claude
Retourne une chaîne en une représentation binaire de la fonction donnée.
s = string.dump(f)
-- Convertit une fonction f en représentation binaire, qui peut être ensuite
-- traitée par loadString pour récupérer la fonction. La fonction doit être
-- une fonction Lua sans upvalues?.
function f() print "hello, world" end
s = string.dump (f)
assert (loadstring (s)) () --> hello, world
Retourne l'emplacement du caractère ou de la sous-chaine recherché.
string.find(string, pattern, init, plain)
-- Recherche la première occurence du pattern dans une chaine de caractères
-- et retourne la position du début et de la fin du mot qu'il a trouvé.
print(string.find("Bonjour tout le monde.", "our")) --> 5 7
print(string.find("Bonjour tout le monde.", "pomme")) --> nil
print(string.find("Bonjour tout le monde.", "our", 6)) --> nil
-- Recherche "our" à partir du 6ème caractère
print(string.find("Bonjour tout le monde.", "%s")) --> 8 8
-- Recherche l'emplacement du premier espace
Retourne une chaîne de caractères formatée. (voir tableau ci-dessous)
string.format(formatstring, e1, e2, ···)
-- Créer une chaîne de caractères formattée et composée des arguments
-- e1, e2 tout en respectant le format défini par formatstring.
print(string.format("Pour manier %s, vous devez être niveau %i", "l'épée", 10))
--> Pour manier l'épée, vous devez être niveau 10
-- Dans cet exemple %s a été remplacé par l'épée et %i par 10
print(string.format ("%q", 'un chat appelé "Pussy"'))
--> "un chat appelé \"Pussy"\"
-- %q - formate une chaîne de telle sorte Lua puisse la lire
-- %s - affiche une chaîne de caractères (ou quelque chose qui puisse
-- être convertie en une chaîne, comme un numéro).
-- %% - Un caractère de sortie simple%
Retourne une sous-chaîne de la chaîne principale.
for w in string.gmatch("Pierre marche dans la rue", "%a+") do
print(w)
end
--> Pierre
-- marche
-- dans
-- la
-- rue
-- Cette fonction renvoie un modèle trouvant un itérateur.
-- L'itération recherche dans la string, la sous chaîne passée à pattern.
Remplace les occurences d'une sous-chaîne.
s, n = string.gsub(string, pattern, remplacement, n)
-- Retourne une copie de string dont les mots représentés par "pattern"
-- ont été remplacés par "remplacement", pour un maximum de n fois.
print(string.gsub("Pierre mange du poisson", "du poisson", "des chips"))
--> Pierre mange des chips 1
-- 1 = le nombre de substitutions
Retourne la longueur d'une chaîne de caractères.
s = "Retourne la longueur de la chaîne en octets, y compris les espaces."
n = string.len(string)
print(n) --> 67
print(#s) --> 67
-- Vous pouvez égalment utiliser l'opérateur unitaire dièse(#)
Convertit les MAJUSCULES en minuscules.
s = string.lower(string)
-- Convertit string en minuscules
print(string.lower("ABCdef")) --> abcdef
Retourne une sous chaîne de caractères.
s = string.match(string, pattern, index)
-- Trouve la première occurence de pattern, commençant à la position "index".
-- C'est similaire à string.find, sauf que les indices de début et de fin ne sont pas retournés.
print(string.match("Vous voyez des chiens et des chats", "v....")) --> voyez
Retourne une chaîne par concaténation multiple.
s = string.rep(string, n)
print(string.rep ("oui ", 4)) --> oui oui oui oui
Inverse une chaîne de caractères.
s = string.reverse(string)
print(string.reverse("La cigale ayant chanté tout l'été"))
--> été'l tuot étnahc tnaya elagic aL
-- Et bien sûr . . .
print(string.reverse("été'l tuot étnahc tnaya elagic aL"))
--> La cigale ayant chanté tout l'été
Retourne une sous chaîne.
s = string.sub (string, start, end)
-- Retourne une sous-chaîne de la string, à partir de l'index "start" et
-- se terminant à l'index "end". Les deux peuvent être négatifs indiquant
-- ainsi un début à droite.
-- Le "end" est facultatif et est par défaut à -1.( indiquant le reste de
-- la chaîne)
print(string.sub ("ABCDEF", 2, 3)) --> BC
print(string.sub ("ABCDEF", 3)) --> CDEF
print(string.sub ("ABCDEF", -1)) --> F
Convertit les minuscules en MAJUSCULES.
s = string.upper(string)
print(string.upper("ABCdef")) --> ABCDEF
Tableau récapitulatif des patterns utilisables avec string.format().
print(string.format("%c", 65)) --> A
-- %c - convertir un nombre en caractère (comme string.char)
print(string.format("%i", 123.456)) --> 123
-- %d et %i - convertit un nombre décimal en entier
print(string.format("%o", 16)) --> 20
-- %o - convertit en octal
print(string.format("%u", 1234.566)) --> 1234
print(string.format("%u", -1234)) --> 429496606
-- %u - Convertit un nombre non signé
print(string.format("%x", 86543)) --> 1520f
-- %x - hex (en minuscules)
print(string.format("%X", 86543)) --> 1520f
-- %x - hex (en majuscules)
print(string.format("%e", 15)) --> 1.500000e+001
-- %e - notation scientifique, "e" en minuscule
print(string.format("%E", 15)) --> 1.500000E+001
-- %E - notation scientifique, "E" en majuscule
print(string.format("%g", 15.656)) --> 15.656
print(string.format("%g", 1)) --> 1
print(string.format "%g", 1.2)) --> 1.2
-- g% - valeur signé imprimée au format %f ou %e, selon le plus compact
-- pour une valeur donnée.