IDENTIFIEUR QUI PERMET DE RETOURNER LE NIÈME CARACTERE D'UNE CHAÎNE DEPUIS LA GA
cs_ReMi34
Messages postés1025Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention28 mars 2005
-
31 mai 2004 à 13:52
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005
-
16 juin 2004 à 18:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 16 juin 2004 à 18:11
Merci, pr ton commentaire Evrae.
Je ne connaissais pas $mis au moment où j'avais posté ce code sinon je ne l'aurai pas fait.
@+
-Carton-
Evrae
Messages postés58Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention16 avril 2005 16 juin 2004 à 18:02
pas mal le remplacement de $mid...quoique je prefere mid ;)
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 2 juin 2004 à 20:55
"if !$1" devrait être remplacé par "if $1 == $null", if !$1 est confirmé si $1 vaut 0, donc par exemple: $substr(00.000,3).left retournera "Erreur de syntaxe" au lieu du caractère ".".
Attention avec l'utilisation de !.
Et je ne vois pas pourquoi mettre 'if $1 && $2' car si on est à ce stade $1 vaut quelque chose et $2 aussi (cf. première ligne), bon après il y a encore place à l'optimisation, regardez le code ci-dessous.
alias substr {
if ($1 == $null || (!$2) || (!$prop)) return Erreur de syntaxe
if (($2 < 1) || ($2 > $len($1))) return
if ($prop == right) return $left($right($1,$2),1)
if ($prop == left) return $right($left($1,$2),1)
}
Bon, sinon pour ce code on aurait aussi pu procéder ainsi (plus lent par contre):
alias substrb {
if ($prop left) { var %exp $regex($1,^.{ $+ $calc($2 -1) $+ }(.)) | return $regml(1) }
if ($prop right) { var %exp $regex($1,(.).{ $+ $calc($2 -1) $+ }$) | return $regml(1) }
}
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 2 juin 2004 à 13:15
/me se permet :p
faut mettre le if $2 > $len($1) { return $1 } en début après le test de validité :)
sinon un return aura forcément print/break l'alias avant =) ou alors je pige pas l'utilité de cette ligne :/
mais c'est vrai que l'on gagne en organisation
alias substr {
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
if $2 > $len($1) { return $1 }
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
}
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 2 juin 2004 à 13:11
merci pour ton commentaire Kerrigan et merci aussi à PaDa
Kerrigan
Messages postés708Date d'inscriptionlundi 15 juillet 2002StatutMembreDernière intervention17 mars 2005 2 juin 2004 à 13:01
petit remaniment
alias substr {
;on place cette ligne au debut pour bloquer
;l'éxécution du code en cas d'érreurs
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
;ici pas de elseif car le return va bloquer le code en cas
;d'érreur dans les arguments.
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
;on met un elseif, car il ne sert a rien de verifier cette condition
;si la premiere ($prop = right) est verifiée
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
;cette ligne est répétée inutilement
;on la met a la fin car on a deja verifier
;que $1 $2 et $prop existen
if $2 > $len($1) { return $1 }
}
ce qui donne sans les commentaires :
alias substr {
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
if $2 > $len($1) { return $1 }
}
au bilan on a gagner une ligne et le code est agencé avec plus de logique.
Domage pour $mid lol mais c'est pas grave au moins tu sais la coder !
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 31 mai 2004 à 16:25
T'as tout a fait raison ! Je corrige
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 31 mai 2004 à 16:22
nickel d'autant que c plus lisible .
sinon je vois pas l'intérêt de distinguer le cas "$2 == 1" ...
bonne continuation a+
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 31 mai 2004 à 15:56
Voila, c'est corrigé.
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 31 mai 2004 à 15:50
ah oui j'avais pas pensé à ce problème là, merci je vais corriger ça. ;)
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 31 mai 2004 à 15:43
comme l'a dit Hades $mid fait déja ca . sinon j'vais ptet t'embêter mais ton truc marche pas.
si ya des gens qui lisent mon comment , quand on veut traiter une chaine de caractère proprement , gèrer des positions , des ordres etc il ne faut JAMAIS UTILISER $REPLACE
lol
pardon :x
essaie ca :
//echo -a > $substr(aaa,2).left :)
faire un $right($left($1,$2),1) eu été bien plus judicieux ... (pour le cas 'left' ...)
bonne continuation
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 31 mai 2004 à 14:52
oue t'as raison ^^
Merci Hades
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 31 mai 2004 à 14:40
Sinon question code, rien à dire, il est très bien codé.
À défaut qu’on peut faire cela avec une fonction de mIRC, au moins ça t'apporte de l'expérience.
darkyojimbo2
Messages postés244Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention25 juin 2005 31 mai 2004 à 14:27
Je ne connaissais pas cet identifieur. :(
Ca me deçoit vraiment mais c'est pas trop grave. Je trouve que mon identifieru est plus simple et il m'aide dans mes devellopements.
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 31 mai 2004 à 14:25
Je suis désolé de te décevoir, mais mIRC offre déjà cette possibilité avec l'identifieur $mid.
$mid(salut,2,1) retourne a
$mid(salut,-2,1) retourne u
cs_ReMi34
Messages postés1025Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention28 mars 20052 31 mai 2004 à 13:52
16 juin 2004 à 18:11
Je ne connaissais pas $mis au moment où j'avais posté ce code sinon je ne l'aurai pas fait.
@+
-Carton-
16 juin 2004 à 18:02
2 juin 2004 à 20:55
Attention avec l'utilisation de !.
Et je ne vois pas pourquoi mettre 'if $1 && $2' car si on est à ce stade $1 vaut quelque chose et $2 aussi (cf. première ligne), bon après il y a encore place à l'optimisation, regardez le code ci-dessous.
alias substr {
if ($1 == $null || (!$2) || (!$prop)) return Erreur de syntaxe
if (($2 < 1) || ($2 > $len($1))) return
if ($prop == right) return $left($right($1,$2),1)
if ($prop == left) return $right($left($1,$2),1)
}
Bon, sinon pour ce code on aurait aussi pu procéder ainsi (plus lent par contre):
alias substrb {
if ($prop left) { var %exp $regex($1,^.{ $+ $calc($2 -1) $+ }(.)) | return $regml(1) }
if ($prop right) { var %exp $regex($1,(.).{ $+ $calc($2 -1) $+ }$) | return $regml(1) }
}
2 juin 2004 à 13:15
faut mettre le if $2 > $len($1) { return $1 } en début après le test de validité :)
sinon un return aura forcément print/break l'alias avant =) ou alors je pige pas l'utilité de cette ligne :/
mais c'est vrai que l'on gagne en organisation
alias substr {
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
if $2 > $len($1) { return $1 }
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
}
2 juin 2004 à 13:11
2 juin 2004 à 13:01
alias substr {
;on place cette ligne au debut pour bloquer
;l'éxécution du code en cas d'érreurs
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
;ici pas de elseif car le return va bloquer le code en cas
;d'érreur dans les arguments.
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
;on met un elseif, car il ne sert a rien de verifier cette condition
;si la premiere ($prop = right) est verifiée
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
;cette ligne est répétée inutilement
;on la met a la fin car on a deja verifier
;que $1 $2 et $prop existen
if $2 > $len($1) { return $1 }
}
ce qui donne sans les commentaires :
alias substr {
if !$1 || !$2 || !$prop { return Erreur de syntaxe }
if $1 && $2 && $prop = right {
if $2 >= 1 { return $left($right($1,$2),1) } }
elseif $1 && $2 && $prop == left {
if $2 >= 1 { return $right($left($1,$2),1) } }
if $2 > $len($1) { return $1 }
}
au bilan on a gagner une ligne et le code est agencé avec plus de logique.
Domage pour $mid lol mais c'est pas grave au moins tu sais la coder !
31 mai 2004 à 16:25
31 mai 2004 à 16:22
sinon je vois pas l'intérêt de distinguer le cas "$2 == 1" ...
bonne continuation a+
31 mai 2004 à 15:56
31 mai 2004 à 15:50
31 mai 2004 à 15:43
si ya des gens qui lisent mon comment , quand on veut traiter une chaine de caractère proprement , gèrer des positions , des ordres etc il ne faut JAMAIS UTILISER $REPLACE
lol
pardon :x
essaie ca :
//echo -a > $substr(aaa,2).left :)
faire un $right($left($1,$2),1) eu été bien plus judicieux ... (pour le cas 'left' ...)
bonne continuation
31 mai 2004 à 14:52
Merci Hades
31 mai 2004 à 14:40
À défaut qu’on peut faire cela avec une fonction de mIRC, au moins ça t'apporte de l'expérience.
31 mai 2004 à 14:27
Ca me deçoit vraiment mais c'est pas trop grave. Je trouve que mon identifieru est plus simple et il m'aide dans mes devellopements.
31 mai 2004 à 14:25
$mid(salut,2,1) retourne a
$mid(salut,-2,1) retourne u
31 mai 2004 à 13:52