Pourcentage majuscules minuscules

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 629 fois - Téléchargée 22 fois

Contenu du snippet

Calcule et retourne le pourcentage de majuscules et de minuscules d'une chaîne

Source / Exemple :


alias ClCMajMin {
  ; Traitement string et calcul du nombre de caractères total ...
  var %CalMajMin = $remove($strip($1-),$chr(32),$chr(160)) , %LenString = $len(%CalMajMin)
  ; Calcul du pourcentage de MAJ et MIN ...
  var %PrcntMAJ = $calc(($regex(%CalMajMin,/(:upper:)/g)/%LenString)*100) , %PrcntMin = $calc(($regex(%CalMajMin,/(:lower:)/g)/%LenString)*100)
  ; Retour des valeurs ...
  return %PrcntMAJ %PrcntMIN
}

Conclusion :


enjoy :o)

(beaucoup ne pensent pas aux regex, mais comme vous le voyez, dans cette application, ils raccourcissent largement un code)

A voir également

Ajouter un commentaire

Commentaires

cs_tofu
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
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.
Panthouffle
Messages postés
281
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
14 avril 2008
-
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és
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
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() ^^
SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
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))
Panthouffle
Messages postés
281
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
14 avril 2008
-
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 :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.