Fonction incompréhensible, besoin d'explications
Sur le site de wowwiki.com on peut lire :
Citation :
Code :
local msg = "Phase2:- There isn't any need for iterating over this mini-string.";
local startPos, endPos, firstWord, restOfString = string.find( msg, "(%w+)[%s%p]*(.*)");

Returns :

Code :
startPos = 1
endPos = 66
firstWord = "Phase2"
restOfString = "There isn't any need for iterating over this mini-string."

Peut-on m'expliquer pourquoi startPos, endPos et firstWord semblant être des variables nulles retournent-elles tout de même quelque chose ?

Est-il possible de faire une variable secondWord, si oui comment ?

Merci de m'éclaircir sur ce point !
D'après moi ça prend les infos d'un message
A mon avis, le startPos c'est le premier caractère, et le endPos le dernier ? Quelque chose comme ça.
Comme une position de ton curseur, au début du script il est au caractère 1, à la fin au 66.

Ensuite la string est découpée, le premier mot (Phase2), et le reste de la string, à l'aide d'une regex.
Oui, je sais à quoi correspond chaque variable, mais même si je change le nom de la variable la valeur reste la même. Je voudrais savoir COMMENT est assignée chaque variable puisqu'elles ne semble pas êtres assignées à première vue !

Merci de votre aide Clin
C'est que la fonction string.find retourne plusieurs résultat dans un ordre précis, celui des variables.
Ok, as-tu regardé à quoi correspond les %w, %s, %p en LUA ?

EDIT: Aaah, Sadikum m'a devancé, l'histoire des % doit définir quelque chose en LUA.
Les % sont des patterns LUA, je suis en train de lire un cours là dessus mais il est pas fini et s'arrête justement à cette partie :/
Le reste c'est en anglais que ça se trouve et malgré mon bon niveau d'anglais c'est pas facile de comprendre.

@Sadikum : Pourquoi alors ne peut-on pas rajouter une variable secondWord qui serait automatiquement "There" ?
Ce sont des symbole de l'expression régulière.
%s = tous les espaces
%w = tous les caractères alphanumérique
%p = tous les signes de ponctuation
Je pense donc que string.find retourne la position de départ, la position d'arrivé puis le résultat retourné par les expressions régulières entre parenthèses dans l'ordre des parenthèses.
Donc (%w+)[%s%p]*(.*) retourne le mot avant un espace ou un signe de ponctuation et retourne le reste du texte après que la suite d'espaces/ponctuation soit passé.

Voici ce qui ma aidé à comprendre : http://www.wowwiki.com/HOWTO:_Use_Pattern_Matching
C'est ce site-là qui me fait paniquer, je comprends rien ! Huh
Pourtant c'est assez simple, prends ton temps et écoute de la musique (ou pas) Langue

Retourner en haut Accueil