Je profite bcp de ce forum pour poser mes questions ;)
Voilà, il s'agit d'une manip de chaines de caractères (où j'y connais tjs pas bcp) et j'aimerai faire simplement la conversion d'une variable (une chaine de caractère) en une suite de nombre par exemple, si vous avez 1:10 comme chaine de caractères (ou 1-10), j'aimerai que mon programme me fasse une boucle de 1 à 10, donc 1 2 3 4 5 etc. Il me faut donc récupérer de cette variable le 1 et le 10 ( numériqué démarqué par un caractère spécifique : ou - ) et puis je peux faire ma suite avec une boucle de 1 à 10, voilà. NB : si cette syntaxe n'est pas correcte alors il ne fait pas la boucle
Dans la même idée mais un peu plus compliqué, on aurait une chaine 1-5 15 20-23, j'aimerai récupérer la suite 1 2 3 4 5 15 20 21 22 23.
Voilà, merci de vos réponses
@++
A voir également:
Récupérer une partie d'une chaine de caractère php
alias boucle {
if (: isin $1) { echo $input(Erreur spécifier un : pour séparer le nombres exemple 1:10) | halt }
if (!$1) { echo $input(Erreur spécifier la chaîne exemple 1:10) | halt }var %chaine $1, %i $gettok(%chaine,1,58)
while (%i <= $gettok(%chaine,2,58)) {
%resultat = %i & $chr(32)
inc %i
}
}
Merci bcp talking
C la commande gettok qu'il me fallait pour arriver à mes fins ;)
Ton exemple m'a permis de comprendre son intérêt (il y a énormément de fct de manip de chaine de caractères et j'y connais pas gd chose - cette dernière me parait extrémement utilise)
De rien j'ai juste oublier de spécifier un truc c'est le résultat plutot que le eccho -a %x de HuZard j'aurai fait
alias boucle {
if (: isin $1) { echo $input(Erreur spécifier un : pour séparer le nombres exemple 1:10) | halt }
if (!$1) { echo $input(Erreur spécifier la chaîne exemple 1:10) | halt }var %chaine $1, %i $gettok(%chaine,1,58)
while (%i <= $gettok(%chaine,2,58)) {
%resultat = %i & $chr(32)
inc %i
}
return %resultat
}
Ainsi si tu tappes //echo -a $boucle(1:10) ça te dira 1 2 3 4 5 6 7 8 9 10
Merci talking mais chez moi ça ne fonctionne pas comme tu l'as mis
je dois mettre dans la boucle
%resultat = %resultat %i
ainsi j'ai bien le résultat qui s'affiche qd je tappe la commande //echo -a $boucle(1:10) Entre () je n'ai pas besoin de résultat en sortie car mon but c d'exécuter un autre alias ds la boucle avec comme paramètre le %i courant (c tout)
Au fait, tu voulais faire quoi avec cette commande exactement :
%resultat = %i & $chr(32)
Encore un détail en ce qui concerne ton code, p/r à des choses lues sur internet (et tout à fait logique) Afin d'optimiser ce code, tu le sais sûrement, il est fortement conseillé de mettre l'évaluation de la valeur de la fonction $gettok dans var %fin (par exemple) car à chaque fois que le script teste la condition il doit refaire une évaluation de la fct $gettok. Imagine que cette évaluation dure 100ms (c bcp trop - je sais mais c juste pour l'exemple). J'exécute la commande $boucle(1:100) dans le cas de ce code - la commande va s'exécuter en 10s ce qui n'est pas négligeable !!! Et comme toute optimisation est la bienvenue surtout en script vu que c interprété, autant le faire systématiquement.