cs_TropNul
Messages postés340Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention22 octobre 2009 1 oct. 2006 à 21:36
oui mais je calcule le $len sur la variable résultante après le $strip et le $remove.
ça me permet justement de ne pas fausser le résultat.
$ClCMajMin(AAAAA) renvoit 100 et 0
$ClCMajMin(AAA BBB) renvoit aussi 100 et 0
rigoureusement parlant, il est clair que ça ne soit pas ' logique ' dans le 2ieme cas que ça renvoit 100 % de Maj , car on lui envoit aussi un espace dans la chaîne .
mais bon , quand je vais lire sur un chan " SALUT CA VA TOI ", je préfère que ça me renvoit la meme chose que s'il yavait " SALUTCAVATOI " . :o)
pour parler de rapidité , les regex sont ' rapides ' , oui et non .
Ils sont a mon avis , un moyen "simple" , efficace et puissant de cibler ce que l'on veut :)
si vous prenez un regex ultra long et meme s'il fait ce qu'on veut , il sera lent :)
merci pour les commentaires :)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 1 oct. 2006 à 20:58
Oui comme l'a dit Tofu, si tu supprime des caracteres dans la chaine que l'on donne, le résultat est faussé.
Panthouffle
Messages postés281Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention14 avril 2008 1 oct. 2006 à 20:39
tofu j'ai fait quelque tests et après une certaine longueur de texte la boucle devient plus lente (logique) tandisque avec $regex je crois que la longueur importe peu <-- ça c'est d'après mes tests parce que ça me donnait 0millisecondes, ensuite après une certaine longueur ça me donnait 15-16millisecondes avec la boucles et 0millisecondes avec $regex donc bon, m'enfin on parle de quelques millisecondes
SnOOpss, effectivement, je ne crois pas qu'on puisse faire mieux que ça :)
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 1 oct. 2006 à 20:27
code de MasterSleepe
/*
Identifieur donnant le pourcentage de majuscules présente dans une phrase
$pourcentmaj(AAA) => 100
$pourcentmaj(AAAa) => 75
$pourcentmaj(-----a) => 0
*/
alias pourcentmaj return $calc($regex($1,/[A-Z]/g) *100/$len($1))
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 1 oct. 2006 à 20:12
ce qui serait intéressant ça serait de comparer les rapidités d'exécutions de ce genre de codes. parce que les regexp évitent de coder une boucle, mais à voir si le while est plus rapide que le traitement effectué par $regex() ^^
Panthouffle
Messages postés281Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention14 avril 2008 1 oct. 2006 à 19:58
Ton code pourrait surtout servir dans un truc comme un anti-majuscules
J'avais rien à faire cette après-midi et je vien prouver que les regex ne réduise pas toujours "largement" le code, par exemple dans cet exemple-ci. le code que j'ai fait retourne les pourcentages de majuscule, minuscules et les caractères inalphabétiques dans un texte et n'utilise pas les regex
alias text {
var %a 1, %maj, %min, %autre, %l $len($1-)
while %a <= %l {
if $mid($1-,%a,1) isalpha {
if $ifmatch isupper { inc %maj }
else { inc %min }
}
else { inc %autre }
inc %a
}
return $calc(%maj / %l *100) $calc(%min / %l *100) $calc(%autre / %l *100)
}
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 1 oct. 2006 à 18:58
je suis pas sur que tu obtiennes un résultat exact étant donné que tu supprimes les espaces alors que ce sont bien des caractères faisant partie de la chaîne, de plus si par exemple on met des chr(9) (des tabulations) ou autres caractères spéciaux ils ne seront pas supprimés ($strip() ne supprimant que les caractères ayant attraits à la mise en forme du texte il me semble.)
personnellement j'aurais plutôt opté pour un troisième pourcentage qui serait la part de caractères non alphabétiques dans la chaine.
ceci dit, ça fait tjrs du bien de voir que des gens utilisent les regexp.
1 oct. 2006 à 21:36
ça me permet justement de ne pas fausser le résultat.
$ClCMajMin(AAAAA) renvoit 100 et 0
$ClCMajMin(AAA BBB) renvoit aussi 100 et 0
rigoureusement parlant, il est clair que ça ne soit pas ' logique ' dans le 2ieme cas que ça renvoit 100 % de Maj , car on lui envoit aussi un espace dans la chaîne .
mais bon , quand je vais lire sur un chan " SALUT CA VA TOI ", je préfère que ça me renvoit la meme chose que s'il yavait " SALUTCAVATOI " . :o)
pour parler de rapidité , les regex sont ' rapides ' , oui et non .
Ils sont a mon avis , un moyen "simple" , efficace et puissant de cibler ce que l'on veut :)
si vous prenez un regex ultra long et meme s'il fait ce qu'on veut , il sera lent :)
merci pour les commentaires :)
1 oct. 2006 à 20:58
1 oct. 2006 à 20:39
SnOOpss, effectivement, je ne crois pas qu'on puisse faire mieux que ça :)
1 oct. 2006 à 20:27
/*
Identifieur donnant le pourcentage de majuscules présente dans une phrase
$pourcentmaj(AAA) => 100
$pourcentmaj(AAAa) => 75
$pourcentmaj(-----a) => 0
*/
alias pourcentmaj return $calc($regex($1,/[A-Z]/g) *100/$len($1))
1 oct. 2006 à 20:12
1 oct. 2006 à 19:58
J'avais rien à faire cette après-midi et je vien prouver que les regex ne réduise pas toujours "largement" le code, par exemple dans cet exemple-ci. le code que j'ai fait retourne les pourcentages de majuscule, minuscules et les caractères inalphabétiques dans un texte et n'utilise pas les regex
alias text {
var %a 1, %maj, %min, %autre, %l $len($1-)
while %a <= %l {
if $mid($1-,%a,1) isalpha {
if $ifmatch isupper { inc %maj }
else { inc %min }
}
else { inc %autre }
inc %a
}
return $calc(%maj / %l *100) $calc(%min / %l *100) $calc(%autre / %l *100)
}
1 oct. 2006 à 18:58
personnellement j'aurais plutôt opté pour un troisième pourcentage qui serait la part de caractères non alphabétiques dans la chaine.
ceci dit, ça fait tjrs du bien de voir que des gens utilisent les regexp.