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

Entrée/Sortie Java Discussion :

Récupérer une partie d'une ligne d'un fichier texte


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut Récupérer une partie d'une ligne d'un fichier texte
    Bonjour,

    J'ai une application java qui me récupère les données d'un fichier texte et que je convertis en pdf (à l'aide iText).
    Cependant la plus part des informations que je récupère me sont inutile mais une chaine se répète et me permet de localiser la partie à garder (entre "VALUE=" et "CELL=").

    Du coup j'aimerai savoir si une fonction permet de localiser ces chaines et savoir comment supprimer le reste...

    Voilà une exemple de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OBJET=CONTROL	TYPE=Label		GENDDL=Comp		VALUE="2.  Date de la congélation:   "																	CELL="20;200;179;16"	FONT="13;Black;1;Arial"
    Du coup tout ce qu'il y a avant Value= (lui compris) doit être supprimé et tout ce qu'il y a après CELL= (lui compris) doit être supprimé.

    Cordialement,
    Clément G.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Up

  3. #3
    Membre expérimenté
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Par défaut
    Bonjour,

    comment récupères-tu ta ligne actuellement?
    De plus, que veux-tu faire exactement, modifier ton fichier texte de départ, ou modifier chaque ligne que tu lis, afin d'effectuer ton traitement spécifique ensuite?

    David.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Je lis mon fichier texte ligne par ligne, j'effectue quelque traitement puis j'enregistre en pdf.
    Donc il n'y a aucune modification du fichier texte

    Du coup je veux plutôt modifier chaque ligne puis créer mon pdf ensuite

  5. #5
    Membre expérimenté
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Par défaut
    Si tu récupères ta ligne dans un String, tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maLigne.substring(maLigne.indexOf("VALUE="), maLigne.indexOf("CELL"));
    Je ne sais pas si c'est cela que tu cherches à faire.
    David.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    C'est exactement ça

    Par contre comment pourrait-je supprimer le "VALUE=" qu'il prend en compte ?

  7. #7
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Par contre comment pourrait-je supprimer le "VALUE=" qu'il prend en compte ?
    Tu utilises ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maLigne.substring(maLigne.indexOf("VALUE=") + "VALUE=".length(), maLigne.indexOf("CELL"));

  8. #8
    Membre expérimenté
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Par défaut
    Tu peux faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String start = "VALUE=";
    maLigne.substring(maLigne.indexOf(start )+start.length(), maLigne.indexOf("CELL"));
    David.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci beaucoup, ça fonctionne parfaitement !

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    Tu peux aussi soit utiliser l'ancienne classe StringTokennizer ou la méthode String.split(...). pour découper ta ligne en éléments.? Par exemple :
    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
    16
     
    String maligne ="OBJET=CONTROL	TYPE=Label		GENDDL=Comp		VALUE="2.  Date de la congélation:   "; 
     
    StringTokenizer st =  new StringTokenizer(maligne). 
     
    for (int i=0; i< st.countTokens(), i++) 
    {
       String elem = st.nextCount.trim(); 
        // maintenant on sépare la clef de la valeur. 
       StringTokenizer ste = StringTokenizer(elem,"=")
       if (ste.countTokens !=2) continue;
       String clef = ste.nextToken();
       String valeur = ste.nextToken();
       if (clef.equalsIgnoreCase("OBJET")  .... // on utilise la variable valeur
       else  if  (clef.equalsIgnoreCase("TYPE")  //  ..... 
    }

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Bonjour,

    J'ai à nouveau un problème de chaine à découper...
    J'ai des chaines de types :
    - "OBJET=CONTROL TYPE=TextField GENDDL=Comp VALUE="" CELL="360;190;130;20" FONT="11;Black;0;Arial" FIELD=e1Date TYPEFIELD=D"
    - "OBJET=CONTROL TYPE=TextField GENDDL=Comp VALUE="" CELL="360;145;130;20" FONT="12;Black;1;Arial" FIELD=e1Num DECIMALE=1 FOCUS=1"

    Je voudrais récupérer le "e1Num" et le "e1Date", cependant la chaine suivante qui se répète et qui me permettrait de récupérer seulement cette partie est un espace, mais je ne vois pas comment faire pour ce type de caractère...

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine = ligne.substring(ligne.indexOf("FIELD=")+("FIELD=").length(), ligne.indexOf(""));
    Mais ceci ne fonctionne pas, j'ai une erreur :
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -125

    Cordialement,
    Clément G.

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu devrais passer par un split sur " " pour récupérer un tableau de liste d'attributs, ensuite tu postes par postes tu peux faire un split sur "=" et chercher le nom d'attribut qui t'intéressent.

    Sinon, il serait préférable de coder les indexOf à part, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int p1 = ligne.indexOf("FIELD=");
    int p2 = 0;
    if (p1 != -1)
    {
       // ici, il a trouvé FIELD=
       p2 = ligne.indexOf(" ", p1);
       if (p2 == -1) p2 = ligne.length();
     
       maChaine = ligne.substring(p1+6, p2);
    }
    (en passant, je t'ai mis un exemple de conversion de charset pour ton autre discussion... au cas où tu n'aurais pas vu... )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci beaucoup pour les conseils !

    Par contre auriez-vous un exemple d'utilisation de la méthode split, car je ne comprend pas son fonctionnement...

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est tout simple, maString.split(" ") convertira la chaîne en un tableau d'autant de postes qu'il y a de "mots" séparés par un blanc (en l'occurrence).
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     String[] t = "une phrase simple".split(" ");
     
    on aura :
     
    t[0] = "une"
    t[1] = "phrase"
    t[2] = "simple"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci beaucoup!!!

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

Discussions similaires

  1. [Débutant] Récupérer les coordonnées d'une partie d'une figure
    Par LeTube dans le forum MATLAB
    Réponses: 0
    Dernier message: 04/06/2014, 13h41
  2. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 18h11
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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