2010-01-26 6 views
2

Je voudrais analyser des chaînes avec un nombre arbitraire de paramètres, tels que P1 + 05 ou P2-01, tous ensemble comme P1 + 05P2-02. Je peux obtenir ces données à partir de chaînes avec un arbre IF assez grand (trop à poster autour de ...) et une variable qui garde la trace de la position dans la chaîne. Lorsque vous atteignez une lettre clé (comme P), il sait combien de caractères lire et procède en conséquence, rien de spécial. Dans cet exemple, disons que j'ai deux joueurs dans un jeu et que je veux donner +05 et -01 points de vie aux joueurs 1 et 2, respectivement. (d'où le + -, je veux qu'ils soient quelque peu lisibles).Extraire des informations dans une chaîne

Cela fonctionne, mais je pense que cela pourrait être mieux fait. J'utilise Lua pour analyser les chaînes, alors peut-être y a-t-il une fonction intégrée, au sein de Lua, pour faciliter ce processus? Ou peut-être quelques conseils généraux, ou des références pour de meilleures approches?

Répondre

4

Voici un code:

for w in string.gmatch("P1+05P2-02","%u[^%u]+") do 
    print(w) 
end 

Il suppose que chaque « mot » commence par une lettre majuscule et ses paramètres ne contiennent pas de lettres majuscules.

+0

Wow, je voulais ajouter des lettres, mais pour ceux sans cela c'est une solution très élégante ... nettement plus simple et, encore mieux, plus propre que mon approche! – Blastamastah

+0

Si vous ajoutez des lettres aux paramètres, ajoutez simplement des lettres * minuscules *. – lhf

Questions connexes