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 19/01/2012, 16h53   #1
Membre éclairé
 
Avatar de coshibe
 
Homme Sébastien Bredele
Développeur Java
Inscription : septembre 2011
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Bredele
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Java
Secteur : Service public

Informations forums :
Inscription : septembre 2011
Messages : 167
Points : 376
Points : 376
Par défaut Création d'un String

Voilà mon problème,

Je veux créer un string de 30 caractères de la manière suivante:
J'ai en entrée 2 strings nom et prénom de taille n et p(entre 0 et 40)

je veux caser le nom dans les 20 premiers caractères du string final(en complétant avec des espaces) et le prénom dans le reste(toujours en complétant avec des espaces)

C'est facile mais disons que je m'y suis pris de maniere un peu barbare avec des boucles à la c...noix. Est ce que quelqu'un connait une méthode simple et élégante avec des substring et autres?

Amicalement.
coshibe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 17h11   #2
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Salut,


La solution est toute simple en utilisant le format à-la-printf() :

Code :
String r = String.format("%-20.20s%-20.20s", n, p);
Où %-20.20s signifie : une chaine de caractère avec 20 caractères minimum et 20 caractères maximum aligné à gauche (grace au signe moins " - ").

Si les termes font moins de 20 caractères ils seront complétés par des espaces.
S'il font plus de 20 caractères ils seront tronqué...


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/01/2012, 11h23   #3
Membre éclairé
 
Avatar de coshibe
 
Homme Sébastien Bredele
Développeur Java
Inscription : septembre 2011
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Bredele
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Java
Secteur : Service public

Informations forums :
Inscription : septembre 2011
Messages : 167
Points : 376
Points : 376
Donc
Code :
1
2
3
4
5
6
public String CreateNom(String nom, String prenom)
{
    String retour = "";
    retour  = String.format("%-20.20s%-10.10s", nom, prenom);
    return retour;
}
si je lance ca me retournera
"Bredele Seb "? avec 13 espaces apres bredele et 7 apres seb.

Ya t'il un moyen de metter le tout en majuscule aussi au passage?

Enfin j'ai essayé de trouver la doc concernant cette methode dans java.txt mais j'ai rien trouvé... une piste?

Merci
coshibe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h37   #4
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Citation:
Envoyé par coshibe Voir le message
ca me retournera
"Bredele Seb "? avec 13 espaces apres bredele et 7 apres seb.
Oui (il suffit de tester )

Citation:
Envoyé par coshibe Voir le message
Ya t'il un moyen de metter le tout en majuscule aussi au passage?
Il suffit de mettre le S en majuscule : %-20.20S%-10.10S"

A noter que dans ce cas là il serait peut-être préférable de passer la Locale (cela pourrait avoir une influence)

Citation:
Envoyé par coshibe Voir le message
Enfin j'ai essayé de trouver la doc concernant cette methode dans java.txt mais j'ai rien trouvé... une piste?
La javadoc de String.format() renvoit vers la syntaxe de la classe [url=http://javasearch.developpez.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax]java.util.Formatter[/quote] qui se charge de tout cela.


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/01/2012, 11h37   #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 020
Points : 7 020
Citation:
Envoyé par coshibe Voir le message
Ya t'il un moyen de metter le tout en majuscule aussi au passage?

Enfin j'ai essayé de trouver la doc concernant cette methode dans java.txt mais j'ai rien trouvé... une piste?
C'est la doc de la classe Formatter, qu'il faut regarder (comme indiqué dans la doc de String.format(), soit dit en passant).

On y trouve le paragraphe "Conversions" dans lequel il est dit que %S est la version uppercase de %s.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 11h47   #6
Membre éclairé
 
Avatar de coshibe
 
Homme Sébastien Bredele
Développeur Java
Inscription : septembre 2011
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Bredele
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Java
Secteur : Service public

Informations forums :
Inscription : septembre 2011
Messages : 167
Points : 376
Points : 376
Citation:
Envoyé par JavaDoc
Since : 1.5


Nos serveurs n'en sont qu'à la 1.4

Je vais aller wine chez mon chef pour la peine.


En tout cas merci pour vos indications!
coshibe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 12h16   #7
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 092
Points : 7 020
Points : 7 020
Oui, enfin, d'accord c'est la lose, mais c'est quand même pas bien compliqué de faire ce genre de choses avec un StringBuffer.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 15h15   #8
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Citation:
Envoyé par coshibe Voir le message


Nos serveurs n'en sont qu'à la 1.4
Profite en pour lui rappeler qu'il n'y a plus de mise jour sur la 1.4 depuis octobre 2008, qu'il n'y a plus de mises à jours sur la 1.5 depuis octobre 2009 et qu'il 'y aura plus de mise à jour de java 6 à partir de juillet de cette année. Vous êtes à la merci des moindres nouveau bug découvert (Notamment celui de la virgule flottante)
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/01/2012, 11h49   #9
Membre éclairé
 
Avatar de coshibe
 
Homme Sébastien Bredele
Développeur Java
Inscription : septembre 2011
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Bredele
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Java
Secteur : Service public

Informations forums :
Inscription : septembre 2011
Messages : 167
Points : 376
Points : 376
Je vais quand meme mettre la méthode bourrin :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public String CreateNom(String nom, String prenom)
	{
		String retour = "";
		if(nom.length()<20)
			retour += nom;
		else
			retour+= nom.substring(0, 19);
 
		while(retour.length()<20)
			retour+= " ";
 
		if(prenom.length()<10)
			retour += prenom;
		else
			retour+= prenom.substring(0, 9);
 
		while(retour.length()<20)
			retour+= " ";
 
		return retour;
 
	}
Voilà pourquoi je voulais savoir s'il existe une astuce...

Merci pour vos contributions.
coshibe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 12h18   #10
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Si c'est souvent appelé, j'aurais préféré voir un StringBuilder
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 12h30   #11
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 092
Points : 7 020
Points : 7 020
Hélas pas de StringBuilder en 1.4.

Donc StringBuffer à la place, m'enfin, c'est encore une raison de plus de faire évoluer la JVM vers une version où il y a encore du support.
thelvin 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 02h41.


 
 
 
 
Partenaires

Hébergement Web