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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    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 confirmé
    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
    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
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    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 confirmé Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    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
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    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
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    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, 17h22
  2. [c#] string.Format argggggg
    Par the_bmo dans le forum C#
    Réponses: 6
    Dernier message: 04/11/2005, 16h06
  3. [VB.NET] StringBuilder Vs String.Format
    Par maitrebn dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/10/2004, 18h58
  4. [C#] String.Format
    Par alexischmit dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 11h58
  5. [VC++ .NET] String::Format({?}, ...
    Par benoitB dans le forum MFC
    Réponses: 2
    Dernier message: 15/12/2003, 13h22

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