Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1404 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Transformer un int en String d'une taille spécifique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transformer un int en String d'une taille spécifique

n°893391
aurel
Fraggueur en liberté
Posté le 08-11-2004 à 15:45:31  profilanswer
 

J'ai besoin de transformer un int en String, mais avec une taille de la String bien précise.
par exemple
formatString(22, 6) 22 = data a transformer, 6= taille de la String
donnerait "000022"
et formatString(4057, 5) "04057"
 
Une idée ?
Tkx


Message édité par aurel le 08-11-2004 à 15:48:39
mood
Publicité
Posté le 08-11-2004 à 15:45:31  profilanswer
 

n°893404
aurel
Fraggueur en liberté
Posté le 08-11-2004 à 15:59:38  profilanswer
 

trouvé :o

n°893408
Profil sup​primé
Posté le 08-11-2004 à 16:00:53  answer
 

n'explique pas hein [:moule_bite]

n°893528
axk47
Java Man vs Boolet Man
Posté le 08-11-2004 à 17:27:29  profilanswer
 

aurel a écrit :

J'ai besoin de transformer un int en String, mais avec une taille de la String bien précise.
par exemple
formatString(22, 6) 22 = data a transformer, 6= taille de la String
donnerait "000022"
et formatString(4057, 5) "04057"
 
Une idée ?
Tkx


 
essaie ce code pour voir (je n'ai pas testé)
 

Code :
  1. public String formatString(int data, int len){
  2. String s =""+data;
  3. int l=s.length();
  4. int diff=len-l;
  5. for(int i=0; i<diff;i++){
  6. s="0"+s;
  7. }
  8. return s;
  9. }


 
cet algo suppose que la longueur de la chaine a formater est toujours inférieure a la longueur spécifiee et de ce fait ne traite pas le cas ou la longueur de la chaine à transformer est superieure a la longuer spécifier.
je n'ai pas testé mais ça ne doit pas etre loin de ça
 


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
n°893552
benou
Posté le 08-11-2004 à 17:58:01  profilanswer
 

Citation :

s="0"+s;


[:fear]

n°893557
axk47
Java Man vs Boolet Man
Posté le 08-11-2004 à 18:08:30  profilanswer
 

ça marche pas ce truc là ou quoi
j'ai pas testé mais je pensais que la concatenation pouvait se faire directemenet sans avoir a creer un string.
 
 :??:  :??:  :??:  :??:  :??:  :??:  


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
n°893569
sircam
I Like Trains
Posté le 08-11-2004 à 18:21:08  profilanswer
 

axk47 a écrit :

ça marche pas ce truc là ou quoi
j'ai pas testé mais je pensais que la concatenation pouvait se faire directemenet sans avoir a creer un string.


Ca dans une boucle, c'est moins qu'optimal.  :sweat:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°893580
benou
Posté le 08-11-2004 à 18:30:05  profilanswer
 

ouep, il vaut bien mieux utiliser StringBuffer ou StringBuilder si tu es déjà passé en java1.5

n°893787
the real m​oins moins
Posté le 08-11-2004 à 23:10:29  profilanswer
 

NumberFormat ..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°893874
benou
Posté le 09-11-2004 à 00:20:32  profilanswer
 

ouais mais là c'est trop facile  :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 09-11-2004 à 00:20:32  profilanswer
 

n°893881
the real m​oins moins
Posté le 09-11-2004 à 00:23:55  profilanswer
 

[:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°893998
axk47
Java Man vs Boolet Man
Posté le 09-11-2004 à 09:45:59  profilanswer
 

sircam a écrit :

Ca dans une boucle, c'est moins qu'optimal.  :sweat:


 
ouai mais il cherche une idée. Il n'a précisé qu'il voulait une solution optimale.
mais toi comment tu fais. :??:  :??:  
tu preferes une  version recursive peut etre qui je trouve moins optimale que celle itérative!  ;)  
 
 


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
n°894008
benou
Posté le 09-11-2004 à 09:59:58  profilanswer
 

mais nan, c'est juste qu'il faut jamais utilser la concaténation de chaines dans une boucle. Ca créé plein d'objets inutiles !


---------------
ma vie, mon oeuvre - HomePlayer
n°894009
sircam
I Like Trains
Posté le 09-11-2004 à 10:02:55  profilanswer
 

Oui, c'est pas parce qu'on a pas demandé une version optimale qui faut sortir un truc... pas très optimal. Disons qu'il est de bonne pratique d'éviter des concaténations de chaînes dans des boucles.
 
Sinon, la prochaine fois qu'on me demande une méthode de tri sans autres précisions, je réponds random sort :)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°894028
axk47
Java Man vs Boolet Man
Posté le 09-11-2004 à 10:26:44  profilanswer
 

benou a écrit :

mais nan, c'est juste qu'il faut jamais utilser la concaténation de chaines dans une boucle. Ca créé plein d'objets inutiles !


 
merci benou je me souviendrai le jour où j'aurai besoin d'écrire du code optimisé.
 :jap:  :jap:


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
n°894049
the real m​oins moins
Posté le 09-11-2004 à 10:46:52  profilanswer
 

benou a écrit :

mais nan, c'est juste qu'il faut jamais utilser la concaténation de chaines dans une boucle. Ca créé plein d'objets inutiles !

bah, encore, les chaines c'est loin d'etre le pire:o tu connais pas Les Dessous Des Strings toi :o

n°894460
benou
Posté le 09-11-2004 à 17:18:55  profilanswer
 

the real moins moins a écrit :

bah, encore, les chaines c'est loin d'etre le pire:o tu connais pas Les Dessous Des Strings toi :o


si ...  :heink:  merci ...  :heink:  
 
y a une vanne que je comprends pas  :??:

n°894462
benou
Posté le 09-11-2004 à 17:19:46  profilanswer
 

axk47 a écrit :

merci benou je me souviendrai le jour où j'aurai besoin d'écrire du code optimisé.
 :jap:  :jap:


rien à voir avec du code optimal ! le truc que tu fais sur des boucles un peu longue, ca te détruit complétement tes perfs ! fait le test toi même ...

n°894463
the real m​oins moins
Posté le 09-11-2004 à 17:20:01  profilanswer
 

ben non [:spamafote]
mais c'est moins "grave" pour des String que pour des objets mutables qui n'ont pas ce machin de sharing qu'ont les String

n°894508
Lam's
Profil: bas.
Posté le 09-11-2004 à 18:07:47  profilanswer
 

D'ailleurs, y a t-il d'autres classes que les String qui sont immutables ?

n°894515
lorill
Posté le 09-11-2004 à 18:11:38  profilanswer
 

oui.
 
genre les Integer

n°894548
benou
Posté le 09-11-2004 à 19:09:32  profilanswer
 

the real moins moins a écrit :

ben non [:spamafote]
mais c'est moins "grave" pour des String que pour des objets mutables qui n'ont pas ce machin de sharing qu'ont les String


ha ouais ? et sur quel autre objet tu peux utiliser l'opérateur '+' ?  :heink:

n°894559
the real m​oins moins
Posté le 09-11-2004 à 19:22:20  profilanswer
 

bon, j'admets, j'ai pas suivi. [:djmb]
(ct juste pour relever que "creer" des instances de string, c'etait pê moins mortel que creer des instances d'autre chose :whistle:)

n°894561
benou
Posté le 09-11-2004 à 19:27:55  profilanswer
 

the real moins moins a écrit :

bon, j'admets, j'ai pas suivi. [:djmb]
(ct juste pour relever que "creer" des instances de string, c'etait pê moins mortel que creer des instances d'autre chose :whistle:)


t'as voulu faire le kéké, ouais  :sarcastic:  
 
et ca dépend de la façon dont elle est crée ...
en l'occurence, là c'est des chaines qui sont appendées dans un StringBuffer => le cache String et le partage de tableau de chars ne s'appliquent pas ...


Message édité par benou le 09-11-2004 à 19:29:05
n°894596
sircam
I Like Trains
Posté le 09-11-2004 à 20:05:06  profilanswer
 

Minute, ce truc de '+' avec les Sting, ça confine au cas pathologique. Un relent de surcharge d'opérateur. C'est assez malsain.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°894626
phnatomass
Je m'empare de ton esprit !!
Posté le 09-11-2004 à 20:39:12  profilanswer
 

Je pense qu'on peut encore optimiser la solution suivante

Code :
  1. String formatString(int data, int len){
  2.     String s = String.valueOf(data);
  3.     int l = s.length();
  4.     int diff = len-l;
  5.     char [] zeros = new char[diff];
  6.    
  7.     for(int i=0; i<diff;i++){
  8.       zeros[i] = '0';
  9.     }
  10.    
  11.     StringBuffer sb = new StringBuffer(len);
  12.     sb.append(zeros);
  13.     sb.append(s);
  14.     return sb.toString();
  15.   }


Message édité par phnatomass le 09-11-2004 à 20:42:46
n°894633
Lam's
Profil: bas.
Posté le 09-11-2004 à 20:44:41  profilanswer
 

2 problèmes:  
  1. quid si diff<=0 ?
  2. Ton tableau "zeros" ne sert à rien, tu peux directement faire des appends de char sur le StringBuffer, ça ira aussi vite à mon humble avis.

n°894639
benou
Posté le 09-11-2004 à 20:56:32  profilanswer
 

sircam a écrit :

Minute, ce truc de '+' avec les Sting, ça confine au cas pathologique. Un relent de surcharge d'opérateur. C'est assez malsain.


 :??: c'est à dire ?


---------------
ma vie, mon oeuvre - HomePlayer
n°894966
phnatomass
Je m'empare de ton esprit !!
Posté le 10-11-2004 à 10:52:51  profilanswer
 

Lam's a écrit :

2 problèmes:  
  1. quid si diff<=0 ?


Oui. Il est vrai qu'au début de toute méthode, il y a des tests a efféctué sur les arguments.

Lam's a écrit :


  2. Ton tableau "zeros" ne sert à rien, tu peux directement faire des appends de char sur le StringBuffer, ça ira aussi vite à mon humble avis.


Presque vrai concernant la vitesse mais à cause justement des tests d'arguments effectués par la méthode append c'est moins rapide.
On chipote  ;)


Message édité par phnatomass le 10-11-2004 à 10:54:31
n°894968
Lam's
Profil: bas.
Posté le 10-11-2004 à 10:56:25  profilanswer
 

phnatomass a écrit :

Presque vrai concernant la vitesse mais à cause justement des tests d'arguments effectués par la méthode append c'est moins rapide.


 
 :??: De quels tests tu parles ?

n°894975
El_gringo
Posté le 10-11-2004 à 11:17:12  profilanswer
 

Une vieille méthode que j'avais faite, qui m'a pas mal servit (convertir l'entier en String avant tout) :

Code :
  1. /**
  2.      * Rend une copie de la chaine <code>_string</code>, mise à la taille passée en paramètre. Si la longueur de cette
  3.      * chaine est inférieure à la taille souhaitée, autant d'occurences que nécessaires sont ajoutés sur la gauche de
  4.      * la valeur passée en paramètre. Si la longueur est inférieure, la chaine est tronquée par la gauche (les caractères
  5.      * les plus à gauche sont ceux supprimés en 1er).
  6.      * @param _string Chaine en entrée
  7.      * @param _iLength longueur de la chaine de sortie
  8.      * @param _cForComplete caractère par lequel complèter la chaine entrée (si nécessaire)
  9.      * @return chaine modifiée
  10.      */
  11.     public static String CompleteByTheLeft (String _string, int _iLength, char _cForComplete)
  12.     {
  13.         if (_string == null)
  14.             return (null);
  15.         int iNbCharsToAdd   = _iLength - _string.length();
  16.         int i = 0;
  17.         // Si on ne doit pas complèter la chaine, mais la tronquer
  18.         if (iNbCharsToAdd < 0)
  19.             return (_string.substring(-iNbCharsToAdd, _string.length()));
  20.         char[] buf          = new char[_iLength];
  21.         for (; i < iNbCharsToAdd; i++)
  22.             buf[i] = _cForComplete;
  23.         for (; (i < buf.length) && (i-iNbCharsToAdd) < _string.length(); i++)
  24.             buf[i] = _string.charAt(i-iNbCharsToAdd);
  25.         return (new String (buf));
  26.     }


Message édité par El_gringo le 10-11-2004 à 11:17:46
n°894994
the real m​oins moins
Posté le 10-11-2004 à 11:39:09  profilanswer
 

c'est quoi cette convention de nommage [:psychokwak]

n°894999
uriel
blood pt.2
Posté le 10-11-2004 à 11:40:01  profilanswer
 

y a un melange de hongrois et autre chose [:paysan]


---------------
IVG en france
n°895008
El_gringo
Posté le 10-11-2004 à 11:44:58  profilanswer
 

hongrois !? J'en sais rien moi. C'est simplement : préfixer les paramètres par un _ , puis le type (s'il s'agit d'un type primaire). C'est si incroyable que ça !?

n°895009
the real m​oins moins
Posté le 10-11-2004 à 11:45:28  profilanswer
 

et la methode avec une majuscule, et les for (; illisibles, et j'en passe :o
 
(en plus l'optimisation bidon des for (; aurait été avantageusement remplacée par un int length = _string.length() que tu appelles à chaque passage de ta boucle [:itm])


Message édité par the real moins moins le 10-11-2004 à 11:46:45
n°895017
El_gringo
Posté le 10-11-2004 à 11:50:57  profilanswer
 

Tu pinailles. Franchement, on s'en contrefou. Une méthode aussi simple que ça, tout le monde est capable de la comprendre j'crois. L'important là, c'est la finalité, c'est tout.
 
EDIT : et puis _string.length(), ça ne fait que rendre un entier, alors niveau optimisation, c'est franchement négligable.


Message édité par El_gringo le 10-11-2004 à 11:54:07
n°895030
uriel
blood pt.2
Posté le 10-11-2004 à 11:57:36  profilanswer
 

non, mais dans mon cas, je parlais de la notation hongroise, t'enerve pas [:joce]
 
http://www.alaide.com/dico.php?q=n [...] se&ix=3960


---------------
IVG en france
n°895033
El_gringo
Posté le 10-11-2004 à 11:59:28  profilanswer
 

C'est pas par rapport à ce que t'as dit que je m'énerve. C'est l'autre -- qui casse les c...


Message édité par El_gringo le 10-11-2004 à 12:00:13
n°895067
phnatomass
Je m'empare de ton esprit !!
Posté le 10-11-2004 à 12:26:36  profilanswer
 

Lam's a écrit :

:??: De quels tests tu parles ?


Des tests de validité des arguments

n°895108
the real m​oins moins
Posté le 10-11-2004 à 12:59:06  profilanswer
 

El_gringo a écrit :

Tu pinailles. Franchement, on s'en contrefou. Une méthode aussi simple que ça, tout le monde est capable de la comprendre j'crois.  

ben justement, je la trouve particulierement imbitable par rapport à ce qu'elle fait [:itm]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Transformer un int en String d'une taille spécifique

 

Sujets relatifs
Taille ImageInformation de la taille de stack maximal [gnu]
Firefox - étirer un <div> à la taille de son contenuConcaténer un char à la suite d'une string
Comment modifier la taille d'un boutton en php(submit)Tableau dont la taille est paramétrable
Sauvegarde d'une base de données Mysql de grosse tailleTaille mémoire des énumérations
Conversion String en PcharProbleme de taille de bouton sur PDA avec WinCE4.2
Plus de sujets relatifs à : Transformer un int en String d'une taille spécifique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR