Précédent   Forum des professionnels en informatique > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2012, 18h55   #1
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 258
Points : 2 578
Points : 2 578
Par défaut Utilisation de String.format

Bonjour,
Question peut être bête. Dans ce bout de code :
Code :
String toto = String.format(monFormat,chaineEnEntree);
Comment puis je écrire le format pour que si chaineEntree :
-Dépasse 10 caractères alors il me tronque et ne laisse que 10 caractères
-n'excède pas 10 caractères alors il m'écrit le début et complète la suite par du vide.

J'ai déjà la réponse à la 2eme question , par exemple :
Code :
String toto = String.format("%-10s","truuu");
La variable toto contient bien en sortie la valeur "truuu ". Mais c'est la troncature que je ne trouve pas.
Any idea ?
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 19h09   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 494
Points : 2 494
Bonjour,

Ceci devrait faire l'affaire :
Code :
1
2
3
4
5
String s = "123456789012345";
String format = String.format("%-10s", s);
String result = format.substring(0, 10);
 
System.out.println(">" + result + "<");
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 19h14   #3
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 258
Points : 2 578
Points : 2 578
Citation:
Envoyé par Nesmontou Voir le message
Bonjour,

Ceci devrait faire l'affaire :
Code :
1
2
3
4
5
String s = "123456789012345";
String format = String.format("%-10s", s);
String result = format.substring(0, 10);
 
System.out.println(">" + result + "<");
C'est gentil, mais je ne voulais pas faire ca, pour la simple raison que je pense qu'il y'a moyen de le spécificier directement dans le format au dessus.
Merci de même, mais je continue de chercher
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 19h19   #4
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 258
Points : 2 578
Points : 2 578
Code :
String toto = String.format("%-10.10s","truuu");
Ceci marche, après j'avoue ne pas avoir compris ce que ca veut dire
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h22   #5
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 092
Points : 7 019
Points : 7 019
Une conversion type s est une conversion dite "générale".
Dans ce cas :

- Le signe - est un flag, qui dit que la conversion doit être alignée à gauche. (Parce que sinon elle l'est à droite.)
- Le 10 avant le point indique que la conversion doit faire au moins 10 caractères
- Le .10 indique que la conversion doit faire au plus 10 caractères.

Donc, 10.10 ça veut dire que ça fait exactement 10 caractères.
Et le - devant indique que s'il n'y a pas assez de caractères pour en avoir 10, il faut en ajouter après (et non pas avant.) En l’occurrence, ce sera un ajout d'espaces.

Voilà pourquoi ça marche.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h33   #6
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 258
Points : 2 578
Points : 2 578
Citation:
Envoyé par thelvin Voir le message
Une conversion type s est une conversion dite "générale".
Dans ce cas :

- Le signe - est un flag, qui dit que la conversion doit être alignée à gauche. (Parce que sinon elle l'est à droite.)
- Le 10 avant le point indique que la conversion doit faire au moins 10 caractères
- Le .10 indique que la conversion doit faire au plus 10 caractères.

Donc, 10.10 ça veut dire que ça fait exactement 10 caractères.
Et le - devant indique que s'il n'y a pas assez de caractères pour en avoir 10, il faut en ajouter après (et non pas avant.) En l’occurrence, ce sera un ajout d'espaces.

Voilà pourquoi ça marche.
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h03.


 
 
 
 
Partenaires

Hébergement Web