IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

question sur String.Format()


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut question sur String.Format()
    Bonjour,

    j'essaye actuellement de formater un String contenant à la fois des caractères alphanumériques et des chiffres au moyen de String.Format mais je n'arrive pas à mes fins.

    j'ai un string du genre "FR1234567890" et je voudrais obtenir un String du genre "FR12 3456 7890", est-ce possible avec String.Format() ?


    J'ai réussi à obtenir le résultat voulu avec un MaskFormatter mais ça risque de me déclencher une exception et ça je ne peux pas.

    J'ai regardé la doc de String.Format et des "format string" mais je n'y arrive toujours pas.

    merci d'avance à qui pourra m'aider

    P.S. désolé si c'est une question débile, je débute en Java et j'ai déjà passé pas mal de temps à googler sur le sujet sans trouver la réponse alors je tente ma chance ici

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, si je comprends bien il s'agit simplement d'insérer des espaces en 5è et 9è position? Si oui, tu peux faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    StringBuilder sb = new StringBuilder("FR1234567890");
    sb.insert(8, " ");
    sb.insert(4, " ");
    String result = sb.toString();

  3. #3
    Membre éclairé Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String str = "FR1234567890";
    	MaskFormatter mf = new MaskFormatter("AAAA AAAA AAAAA");
    	mf.setValueContainsLiteralCharacters(false);
    	String formatted = mf.valueToString(str);
    	System.out.println(formatted);

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut
    CheryBen merci pour ta réponse, j'utilise actuellement une solution comparable où je construit aussi un autre String en me basant sur mon string initial et en lui ajoutant des espaces là où il faut mais ma question était de savoir si c'était possible de faire ça avec String.Format() ?


    Javix, merci de ta réponse, mais bon j'ai bien précisé qu'avec MaskFormatter ça ne convenait pas (oui moi aussi j'ai googlé avant de poser la question ici )

  5. #5
    Membre éclairé Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Par défaut
    Avec StringBuilder au pourrais aussi bien avoir une StringIndexOutOfBoundsException

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut
    OK mais dans ma solution actuelle je n'utilise pas StringBuilder mais StringBuffer
    et apparament il ne me demande pas de gérer une quelconque exception comme il le fait quand je tente d'utiliser MaskFormatter.

    De toutes façon ne pouvant pas passer trop de temps là dessus voilà ce que j'ai implémenté dans ma classe où "value" est un String avec ma chaine à formater :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     public String getFormattedValue(){
     
    	StringBuffer formattedValue = new StringBuffer(getValue().substring(0, 4))
    				.append(" ")
    				.append(getValue().substring(4, 8))
    				.append(" ")
    				.append(getValue().substring(8, 12))
    				.append(" ")
    				.append(getValue().substring(12, 16));
     
        	return formattedValue.toString();
        }
    merci à vous 2 pour votre participation

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,
    Deux petites précisions sont toutefois nécessaire :
    Citation Envoyé par Rincevent76 Voir le message
    OK mais dans ma solution actuelle je n'utilise pas StringBuilder mais StringBuffer
    Il y a une différence fondamentale entre les deux c'est que StringBuffer est synchronisé. si StringBuffer n'est pas utilisé dans un contexte multi-thread, il est plutôt conseillé d'utiliser StringBuilder, car la synchronisation à un cout.

    Citation Envoyé par Rincevent76 Voir le message
    apparament il ne me demande pas de gérer une quelconque exception
    le fait que tu n'es pas un try catch à mettre ne veux pas dire que tu ne peux pas avoir d'exception. Car en effet le StringBuffer avec la methode insert peut renvoyé une StringIndexOutOfBoundsException qui est une RuntimeException.
    Maintenant effectivement si dans ton code tu es sur à 100% de la taille de la chaîne, pas besoin de catcher l'exception.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    j'ai une question qui ne rejoint pas le sujet mais bon je ne comprend pas dans quelles cas la ParseException est levé ?

    la réponse peut peut être te faire changé d'avis sur les le MaskFormatter

    @Javix j'utiliseré meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaskFormatter mf = new MaskFormatter("**** **** *****");
    A Any character or number (Character.isLetter or Character.isDigit)
    * Anything.
    @Rincevent76 tu peut toujours avoir une NullPointerExeption si ta chaine n'est pas bonne

  9. #9
    Membre éclairé Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Par défaut
    Citation Envoyé par rolfone Voir le message
    j'ai une question qui ne rejoint pas le sujet mais bon je ne comprend pas dans quelles cas la ParseException est levé ?

    la réponse peut peut être te faire changé d'avis sur les le MaskFormatter

    @Javix j'utiliseré meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaskFormatter mf = new MaskFormatter("**** **** *****");


    @Rincevent76 tu peut toujours avoir une NullPointerExeption si ta chaine n'est pas bonne
    Apparement, dans API pour MaskFormatter, dans Constructor Summary:
    Throws:
    ParseException - if mask does not contain valid mask characters

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petite question sur le format des dates
    Par sherdogvdb dans le forum Forms
    Réponses: 4
    Dernier message: 08/03/2007, 10h14
  2. Question sur le format de date reformulée
    Par fasso dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 26/10/2006, 16h14
  3. Question sur le format des frame
    Par argon dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 12/04/2006, 14h02
  4. Question sur le format de texture
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 06/12/2003, 12h22
  5. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo