En lua 5.1, vous pouvez parcourir les caractères d'une chaîne de caractères présente dans un couple des manières.
La base de la boucle serait:
pour i = 1, #str faire
local c = str:sub(i,i)
-- faire quelque chose avec c
fin
Mais il peut être plus efficace d'utiliser un modèle avec string.gmatch()
pour obtenir un itérateur sur les personnages:
c str:gmatch"."
-- faire quelque chose avec c
fin
Ou même utiliser string.gsub()
pour appeler une fonction pour chaque char:
str:gsub(".", fonction(c)
-- faire quelque chose avec c
fin)
Dans tout ce qui précède, j'ai profité du fait que l' string
module est défini comme une métatable pour toutes les valeurs de chaîne, de sorte que ses fonctions peuvent être appelées en tant que membres à l'aide de l' :
de la notation. J'ai aussi utilisé le (nouveau 5.1, IIRC) #
pour obtenir la longueur de la chaîne.
La meilleure réponse pour votre application dépend de beaucoup de facteurs et de critères de référence sont à votre ami si la performance est d'aller à la matière.
Vous pouvez évaluer pourquoi vous avez besoin pour effectuer une itération sur les personnages, et à regarder l'un de l'expression régulière modules qui ont été liés à Lua, ou pour une approche moderne de la regarder dans Roberto lpeg module qui implémente l'Analyse de l'Expression Grammers pour Lua.