Séparateur de millier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 107 fois - Téléchargée 30 fois

Contenu du snippet

Ce code, avec la commande /range N ( où N est un nombre ) permet de le ranger de la manière suivante : si je tape /range 1000000 celui-ci rendra dans le dialog le nombre suivant : 1|000|000 .
Si vous ne comprenez pas, utilisez le vous comprendrez vite.
Voilà, je pense avoir été clair, néanmoins un problème réside pour les nombres dépassant une vingtaine de caractères car j'ai fais ce code à l'arrache, et il n'est pas optimisé, il y a des variables temporaires partout mais bon je l'ai laissé tel quel car il fonctionnait pas mal.

Source / Exemple :


alias range {
  dialog -m range range
  var %x = $regex($1,/([0-9])/g) , %y = 1 , %g = 3 , %h = 1 , %f = 2 , %j = 1 , %k = -1 , %q = 0
  while ( %y <= %x ) { did -a range 1 $regml(%y) $+ . | inc %y  }
  dec %y 
  var %z = $did(range,1) , %w = $replace(%z,.,$chr(32)) , %xx = $replace(%w,$chr(32),-), %yy = $calc(%x / 3)
  var %a = $regex(%yy,^[0-9]+\.[0-5]+$) , %b = $regex(%yy,^[0-9]+\.[^0-5]+$) , %c = $regex(%yy,^[0-9]+\.[0-9]+$)
  $iif(%a == 0,$iif(%b == 1,did -ra range 1 $replace($gettok(%xx,1-2,45),-,),did -ra range 1 $replace($gettok(%xx,1-3,45),-,)),did -ra range 1 $replace($gettok(%xx,1,45),-,))
  if ( %a == 0 ) && ( %b == 0 ) {
    var %d = $calc(%x - 3)   
  while ( %g <= %d ) { inc %g 3 | inc %h 3 | did -a range 1 $chr(124) $+ $replace($gettok(%xx,%h $+ - $+ %g,45),-,) } }
  elseif ( %a == 0 ) && ( %b == 1 ) {
    var %e = $calc( %x - 2 ) 
  while ( %f <= %e ) { inc %f 3 | inc %q 3 | did -a range 1 $chr(124) $+ $replace($gettok(%xx,%q $+ - $+ %f,45),-,) } }
  elseif ( %a == 1 ) && ( %b == 0 ) {
    var %m = $calc( %x - 1 ) 
  while ( %j <= %m ) { inc %j 3 | inc %k 3 | did -a range 1 $chr(124) $+ $replace($gettok(%xx,%k $+ - $+ %j,45),-,) } }
}

dialog range {
  title "Rangement"
  size -1 -1 110 35
  option dbu
  edit "", 1, 5 5 100 9, read
  button "Fermer", 2, 30 19 50 12, ok
  button "Copier", 3, 5 19 20 12
  link "Contact", 4, 84 21 22 9
}

on *:dialog:range:sclick:*: {
  if ( $did = 3 ) { editbox -a $did(1) }
  if ( $did = 4 ) { run mailto:erikire13@hotmail.com }
}

Conclusion :


Copier le code et faites ALT+R dans votre script.
File=>New et coller le code.
Bonne utilisation :-)

A voir également

Ajouter un commentaire

Commentaires

cs_neo66
Messages postés
125
Date d'inscription
mercredi 15 octobre 2003
Statut
Membre
Dernière intervention
20 mai 2006
-
je comprend pas a quoi sa sert ?
quand je met: /range 25456445164
il me donne: 25|456|445|164

d'apres ce que je vois, sa ne range pas le nombre mais sa le decoupe, les milliards, les millions, les millier, les centaines.
donc "Alias pour ranger de gros nombres", je comprend pas, car on rentre qu'un nombre, donc sa peut pas le "ranger" :?
donc pour resumé, pour moi ce code, ne fait que decoupé le nombre, certes ce sera plus simple pour le comparais a un autre, mais sa le range pas :)
si je me trompe, explique moi mieu
cs_fyltum
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005
-
Aussi I N U T I L E que toi .
Nan je déconne c'est du joli en plus un petit dialog sympa :)
En plus je vais me mettre aux regex grace à toi
Dommage pour le bug des gros nombres sinon ça serai parfait mais bon...
Bonne chance dans tes défis :)
cs_KiNdErMaXi
Messages postés
1052
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2 -
moi jtrouve ca plutot sympa, c'est sur qu'on ne s'en sert pas tous les jours mais ya eu du boulot !
mais un dialog juste pour ca :o\
met le en echo au lieu de faire un dialog ou meme dans un popus
bonne continuation ;)
cs_PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
1 -
post précédent non passé grr
en gros : ton alias est bcp trop long, sinon ca peut etre sympa (mets des virgules plutot que les barres verticales :p)

;//Echo > $range2(132456789134567891201564561561561)
;normalement ca marche
Alias range2 var %y $str(;,$calc(3- $len($1) % 3)) $+ $1,%x $regsub(%y,/(.{3})/g,\1|,%y) , %x = $regsub($remove(%y,;),/^\||\|$/g,,%y) | return %y
cs_KiNdErMaXi
Messages postés
1052
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2 -
gloups :o|

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.