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

Java Discussion :

récupérer un stringbuffer


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut récupérer un stringbuffer
    Bonjour
    je suis entrain de lire un contenu d'un résultat avec les stringBuffer bon je me suis bloqué sur une partie et j'ai besoin de votre aide
    Bon j'ai le résultat suivant:

    interface FastEthernet 0
    description TREL_TM1657

    je dois enregistre 1 données le mot qui suit "descrption" et en même temps garder le numero après "_TM"

    Bon pour le mot j'arrive à le récupérer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    do{
                     ch = (char)in.read();
                     sb.append(ch);
                  }while(!sb.toString().contains("description"));
    if(sb.toString().contains("description")){
                  sb = new StringBuffer();            
                 do{               
                  ch = ( char )in.read();
                  sb.append(ch);       
                 }while(ch!=10 && ch!=13 );
     
                      client=sb.toString();
    le 10 et le 13 c'est à dire le saut de la ligne il va lire jusq'au description et il prend le mot suivant avant le saut de la ligne
    Le problème c'es que je veux qu'il relit ce sb jusqu'à _TM et prendre le nombre qui est attaché

    Comment puis-je faire çà
    Merci et bonne journée

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Utilise plutôt une expression régulière.
    tu définis un modèle de chaîne de caractères à trouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String modelMot = "[A-Z]{4}_TM";
    String modelNumber = "_TM[0-9]{4}";
    [A-Z]{4}_TM veut dire "une chaîne de caractères majuscules compris entre A et Z qui doit avoir une longueur de 4 et qui est suivie par _TM"
    [0-9]{4} veut dire "une chaîne de chiffres compris entre 0 et 9 qui doit avoir une longueur de 4 et qui est précédée par _TM"

    on assemble et on compile le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String tout = "(" + modelMot + ")|(" + modelNumber + ")";
    Pattern pattern = Pattern.compile(tout);
    on lance la recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String capture = "interface FastEthernet 0 description TREL_TM1657";
    Matcher matcher = pattern.matcher(capture);
    on récupère :
    le groupe 1 correspond à la 1ère recherche
    le groupe 2 correspond à la seconde recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If (matcher.find()) {
       System.out.println(matcher.group(1));
       System.out.println(matcher.group(2).substring(3));
    }
    Le résultat doit être :
    TREL_TM
    1657


    note : j'ai ajouté .substring(3) au group(2) car sinon cela aurait fait _TM1657
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    Merci bien mais moi j'ai pas juste cette données je teste sur plusieurs et il ne contiennent pas la même structures 4 lettre _TM et 4 chiffres
    par exemple j'ai cette chaine :
    TRESORERIE_DGT_L2L_TM1657

    et je dois récupérer le dernier nombre après le _TM

    et pour les expressions régulière je trouve que c'est compliqué d'appliquer çà au niveau de mon code puisque je travaille avec les SB et j'ai pas bien compris comment utiliser celà

    Si vous voulez m'aider à résoudre ce problème parcque çà fait 2 jrs que je essaye et j'arrive pas à le faire

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    et pour string capture=""
    pour moi je dois prendre ce qui est dans le stringBuffer je dois prendre le dernier numéro après la _TM donc pourquoi vous avez écrit toute cette chaine ??

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Donc, si je comprend bien, tu peux avoir dans ta chaîne :
    "interface FastEthernet 0 description TRESORERIE_DGT_L2L_TM1657"
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    Non moi au début je récupère ce qui suit le mot description je le résupére
    et je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.print(sb);
    Alors ce sb je dois le tester s'il contient le _TM à la fin je dois récuperer le nombre attacher à lui

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Si tu ne veux pas utiliser les expressions régulières alors
    en supposant que tu as "TRESORERIE_DGT_L2L_TM1657" dans ton sb,
    pour récupérer 1657 il faut repérer l'endroit où se trouve "_TM" puis prendre les 4 chiffres suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            String chaine = sb.toString();
            int pos = chaine.indexOf("_TM") + 3 ;
            System.out.println(chaine.substring(pos, 4));
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/03/2011, 13h55
  2. Récupérer StringBuffer dans une autre classe
    Par jacko2 dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 14/03/2008, 15h23
  3. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35
  4. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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