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

API standards et tierces Java Discussion :

String Format : 123A456 en 1 23A 456


Sujet :

API standards et tierces Java

  1. #1
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut String Format : 123A456 en 1 23A 456
    Bonjour,

    y-a t'il un moyen, en utilisant les formaters Java, de transformer une String en la même String mais avec des espaces tous les trois caractères (façon NumberFormat) ???

    Exemple :

    111A23B456 en 1 11A 23B 456

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : novembre 2006
    Messages : 75
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    Tu peux utiliser des regex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //la regex : 3 points correspondent à 3 fois n'importes quels caractères
    Pattern p = Pattern.compile("...");
     
    //la chaine à travailler
    Matcher m = p.matcher("abcdef");
    System.out.println("Pattern is " + m.pattern());
     
    //la chaine de sortie
    String nouvelle = "";
    while (m.find()){
    System.out.println("de "+m.start() + " à  " + m.end()  + " il y a : " + m.group());
    nouvelle += m.group() + " " ;
    }
    System.out.println("nouvelle = " + nouvelle);
    ++@

  3. #3
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    Cette utilisation des expressions rationnelles ne répond pas exactement au problème car elle commence les groupes à partir du début et non de la fin.

    Quitte a utiliser les regexps, autant utiliser un seul replaceAll:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            String text = "111A23B456 ";
            String regexp = "(?=(...)+$)";
     
            String textFiltre = text.replaceAll(regexp, " "));

  4. #4
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par Uther Voir le message
    Quitte a utiliser les regexps, autant utiliser un seul replaceAll:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            String text = "111A23B456 ";
            String regexp = "(?=(...)+$)";
     
            String textFiltre = text.replaceAll(regexp, " "));
    Bravo et merci

    Pour chipoter un peu, cela ajoute un blanc en plus au début de textFiltre... Mais un trim arrange cela simplement !

    Juste pour ma culture personnelle, pourrais-tu me m'expliquer et me décrire l'expression régulière utilisée ?

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    J'avoue que le fonctionnement de cette regexp n'est pas évident.
    A la base j'imagine que je remplace remplace la chaine vide par un espace.
    replaceAll(""," ") donnerait normalement : 1 1 1 A 2 3 B 4 5 6

    Mais j'ajoute un lookahead(la structure de type (?= expression ) )qui me permet de rajouter une restriction: il faut qu'il y ait un ou plusieurs groupes de 3 caractères( (...)+ ) suivis de la fin de la chaine ( $ )

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    Citation Envoyé par tnodev Voir le message
    Pour chipoter un peu, cela ajoute un blanc en plus au début de textFiltre... Mais un trim arrange cela simplement !
    en effet cela va arriver si le nombre de caractère est un multiple de trois. Pour éviter cela, on pourrait utiliser l'expression: (?<!^)(?=(...)+$)

    (?<! expression) est un autre type de lookaround qui permet de vérifier ce qui précède n'est pas un début de ligne ( ^ )

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

Discussions similaires

  1. [C#]String.Format avec un Array
    Par backseatgreg dans le forum C#
    Réponses: 11
    Dernier message: 27/11/2005, 18h22
  2. [c#] string.Format argggggg
    Par the_bmo dans le forum C#
    Réponses: 6
    Dernier message: 04/11/2005, 17h06
  3. [VB.NET] StringBuilder Vs String.Format
    Par maitrebn dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/10/2004, 19h58
  4. [C#] String.Format
    Par alexischmit dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 12h58
  5. [VC++ .NET] String::Format({?}, ...
    Par benoitB dans le forum MFC
    Réponses: 2
    Dernier message: 15/12/2003, 14h22

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