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

Langages de programmation Discussion :

Découper String en tableau. De quelle sorte ?


Sujet :

Langages de programmation

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Découper String en tableau. De quelle sorte ?
    Bonjour,

    On me demande d'analyser un fichier de log (.dat) pour en extraire des lignes bien précises puis certains champs de ces lignes.
    Je réussi à extraire les lignes qui m'intéressent grâce aux regex.
    Voici le genre de String :

    R|DA|DA0001436\1000|A0001436-100-01TO110D0005|DA0001436\1000|0930930033703|||0000000001.00000|NB|||20130128|LO1|MPR|...

    Comme vous le constatez, cette String est découpée en champs séparés par des "|"
    J'hésite quand à la meilleur méthode à adopter pour mettre ces strings en tableau : utiliser un simple tableau, une hastable, hashmap... ? pour pouvoir ensuite ne garder que les champs qui m'intéressent et les écrire dans un fichier .csv

    Quelle serait, selon vous, la méthode la plus efficace ?

    Mon autre problème est que pour d'autres String du même fichier le séparateur n'est pas un tube mais un ";" :

    A24342;20121015;OF036091\20;FMG;FM5L4CA1B;SS;9;...

    Je compte utiliser un "replace" pour transformer les différents séparateurs en un seul.
    Suis-je sur la bonne piste ?
    (je sors de formation et c'est ma première mission pro. J'aimerais la réussir...)

    PS : je code en Java

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Franchement, chaque champ a une signification et la string possède un format bien défini (ou deux formats bien définis), non?

    Dans ce cas, le mieux serait de séparer en simple tableau avec split(), puis mettre chaque élément du tableau dans le champ correspondant d'une classe...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse Médinoc,

    Effectivement : je n'ai mis que 2 String en exemple mais il y en a bien d'autres sortes.
    En fait, le fichier que je dois traiter (entre 25 000 et 35 000 lignes, ça dépend des jours) est composé de "blocs" correspondant aux rapports de différents traitements.
    Presque chaque bloc a un style de String différent et un encodage différent (ANSI, UTF8).

    Comme je dois générer un fichier (nettoyé des lignes et colonnes "inutiles") pour chaque bloc, je pense créer une class pour le traitement de chacun d'entre eux, ça sera plus évolutif si je dois ensuite créer des class pour de nouveaux blocs.

    Je compte donc pour chaque bloc :
    - mettre les lignes qui m'intéressent dans un tableau, comme tu me le conseille,
    - sélectionner les colonnes que je dois garder,
    - appeler une méthode pour les écrire dans un fichier.

    Pas d'hérésie dans mes propos ?

    Je ne manquerai pas de vous tenir informé de l'évolution de mon application.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bon...

    J'arrive à découper ma string en tableau pour la mettre dans un arrayList. Mais j' écris les string successives toujours sur la même ligne :
    lorsque je découpe mes string elles s'affichent bien dans la console mais quand je veux écrire l'arrayList j'ai la même adresse mémoire de colonne pour chaque ligne.
    J'ai beau chercher sur le net , je tourne en rond.

    Le code : (j'ai mis des out.print"index ligne et colonne" pour essayer de comprendre)
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    package test_split;
    
    import java.io.*;
    import java.util.*;
    
    public class Test_split {
    
        public static void main(String[] args) {
            //String fichierLu = "ZINT315B_20121120.dat";
            String fichierLu = "1_ZINT315B_20121120.dat";
            String fichierEc = "Traitement_Fichier_Ecriture.csv";
            BufferedReader fluxEntree;
            
            String ligneLue = "";
            String[] ligneSplit = {};
            List<String[]> aLignes = new ArrayList<String[]>();
            int indexLigne=0, indexColonne=0;
            Iterator iter = aLignes.listIterator();
    
            try {
                fluxEntree = new BufferedReader(new FileReader(new File(fichierLu)));
                
                
                
                while (ligneLue != null) {
                    
                    if (ligneLue.matches("R.*")) {   
                        ligneLue = ligneLue.replace("|", ",!");
                        ligneSplit = ligneLue.split("!");
                        System.out.println(" index aLignes : "+indexLigne);
                        
                        for (indexColonne=0; indexColonne<ligneSplit.length; indexColonne++) {
                            System.out.println(ligneSplit[indexColonne]+"         index colonne : "+indexColonne);
                            aLignes.add(indexLigne, ligneSplit.clone());//aLignes.add(aLignes.indexOf(iter), ligneSplit.clone());
                        }
                        aLignes.iterator().next();
                        indexLigne++;
                    }//fin if
                    
                    System.out.println("--------------------------------------------");
                    ligneLue = fluxEntree.readLine();
                    
                }//fin while
            }
            catch (Exception eLect) {
                System.out.println("Erreur lecture flux entree :"+eLect.getMessage());
            }   
            
            try {
                Writer fluxSortie = null;
                fluxSortie = new PrintWriter(new BufferedWriter(new FileWriter(fichierEc))); 
                while (iter.hasNext()) {
                    for (int k=0; k<indexColonne; k++) {
                    System.out.print("index colonne :  "+k+"  ");
                    System.out.println(aLignes.get(k).toString());
                    fluxSortie.write(ligneSplit[k].toString());
                    }
                iter.next();
                }
            }
            catch (Exception eIt) {
                System.out.println("erreur ecr :"+eIt.getMessage());
            }
            
        }//fin main
        
    }
    et la console (certains champs ne contiennent rien donc c'est normal qu'il y ait juste les , devant "index ...")
    Le premier affichage, lorsque je rempli mon arrayList est correcte (tous les champs de toutes les lignes)

    ...
    , index colonne : 39
    , index colonne : 40
    --------------------------------------------
    index aLignes : 2
    R, index colonne : 0
    UO_S001, index colonne : 1
    ...
    , index colonne : 39
    , index colonne : 40
    --------------------------------------------
    index colonne : 0 [Ljava.lang.String;@246bc73b
    index colonne : 1 [Ljava.lang.String;@1fe5052b
    ...
    index colonne : 39 [Ljava.lang.String;@7f54e38b
    index colonne : 40 [Ljava.lang.String;@1e26fbfc
    erreur ecr :null
    BUILD SUCCESSFUL (total time: 0 seconds)
    Si quelqu'un a une idée...

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai un peu l'impression de faire un monologue, mais bon...
    J'ai trouvé une solution beaucoup plus simple : un arrayList de String dans lesquelles j'ai remplacé les tubes "|" par des ";" et ça marche.
    Même si j'aurais préféré un tableau pour pouvoir sélectionner les colonnes.

    Bref avec ça, ça marche :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    package analyse_fichier;
    
    import java.util.*;
    import java.io.*;
    
    public class Analyse_Fichier {
    
        public static void main(String[] args) {
            String fichierLu = "fichier_source.dat";
            Date date = new Date();
            String sDate = date.toString().replace(":", "-");
            String fichierEc = "fichier_genere_"+sDate+".csv";
            
    	String ligneLue = "";
            BufferedReader fluxEntree;
            List<String> aLignes = new ArrayList<String>();
            int NbLigneSource=0, NbLignExtr=0, NbLignErr=0;
            boolean bOk = false;
            
            try {
                fluxEntree = new BufferedReader(new FileReader(new File(fichierLu)));
                
                while (ligneLue != null) { 
                    try {
                        if (ligneLue.matches("/filevaults/.*/ZINT315.*")) {
                            bOk = true;
                            aLignes.add(ligneLue);
                            NbLignExtr++;  
                        }
                        
                        if (ligneLue.matches("")) {
                            bOk = false;
                        }
                        
                        if (bOk == true) {
                            if (ligneLue.matches("R.*")) { 
                                aLignes.add(ligneLue.replace("|", ";"));
                                NbLignExtr++;
                                NbLignErr++;
                            }
                        }
                        
                        ligneLue = fluxEntree.readLine();
                        NbLigneSource++;
                    }
                    catch (Exception eLec) {
                        System.out.println("Erreur lecture ligne : " + eLec.getMessage());
                    }
                }//fin while ligne
                
                try {
                    Analyse_Fichier.ecrireFichier(fichierEc, aLignes);
                }
                catch (Exception eEc){
                    System.out.println("Erreur ecriture : " + eEc.getMessage());
                }
                fluxEntree.close();
                
                System.out.println("Fin de fichier");
                System.out.println("Nombre lignes fichier source : " + NbLigneSource);
                System.out.println("Nombre lignes extraites : " + NbLignExtr);
                System.out.println("Nombre lignes d'erreurs : " + NbLignErr);
                
            }   
            catch (FileNotFoundException eFnt) {
                System.out.println("Fichier non trouvé" + eFnt.getMessage());
            }
            catch (IOException eFc) {
                System.out.println(eFc.getMessage());
            }         
        } //fin main
        
        
        public static void ecrireFichier(String fichierEc, List<String> aLignes){
            Writer fluxSortie = null;
    		try {
    			fluxSortie = new PrintWriter(new BufferedWriter(new FileWriter(fichierEc)));
    			for(int i=0;i<aLignes.size();i++){
    				fluxSortie.write(aLignes.get(i)+"\n");
    			}
    		}
    		catch(IOException exEc){
    			System.out.println("Erreur écriture : " + exEc.getMessage());
    		}
    		try {
    			fluxSortie.close();
    		}
    		catch(IOException exFr){
                System.out.println("Erreur fermeture flux de sortie : " + exFr.getMessage());
            }
        } //fin ecrireFichier
    
    } //fin class Analyse_Fichier
    Si quelqu'un a une solution pour sélectionner les colonnes, je suis toujours preneur.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh, tu peux sélectionner les colonnes avec un arraylist aussi, non?

    Enfin c'était bizarre ton truc, je n'ai pas vraiment compris le problème.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    bonjour Médinoc et merci pour ton suivi,

    Je récapitule : j'arrive à faire une liste de mes lignes lues dans mon fichier .dat et à les écrire dans un fichier .cvs tout simplement en remplaçant le séparateur de champs "|" par un ";".

    Voici les lignes de code concernées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<String> aLignes = new ArrayList<String>();
    if (ligneLue.matches("R.*")) {
        aLignes.add(ligneLue.replace("|", ";"));
    et j'appelle ensuite ma méthode pour écrire mon fichier csv. Ça, ça marche.

    Mais j'aurais aussi besoin de mettre ces lignes en tableau pour des traitements ultérieurs.
    Mon idée était donc de créer un autre ArrayList mais de String[] et de Spliter chaque ligne. Mais là, je bloc...
    J'ai pourtant bien rajouter une boucle dans la boucle "tant que ligne suivante" pour traiter chaque champ de la ligne.
    Je ne trouve pas comment déclarer puis créer mon tableau avec un nombre de colonne qui n'est connu qu'au traitement de la première ligne.

    J'ai aussi essayé avec StringTokenizer mais toujours bloqué. C'est pourtant pas faute d'avoir cherché sur le net et essayé toutes sortes de choses.

    J'ai aussi essayé en créant un tableau à 2 dimensions mais rien à faire. Sachant que le nombre de lignes et de colonnes n'est pas connu au départ et que certains champs de mes lignes splitées sont vides.

    Les lignes de mon arrayList que je voudrais splitter pour faire un arrayList<String[]> :
    ArrayList :
    R|UO_S001|LO1|.........|2020567||La t�che <FM3L6S301> est ferm�e.||||
    R|UO_S001|LO1|.........|2020464||La t�che <FM3L6S301> est ferm�e.||||
    R|UO_S001|LO1|.........|2020460||La t�che <FM3L6S301> est ferm�e.||||
    Le dernier code que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    List<String[]> tLignes = new ArrayList<String[]>();
    if (ligneLue.matches("R.*")) {
        aLignes.add(ligneLue.replace("|", ";"));
        StringTokenizer st = new StringTokenizer(ligneLue, "|");
        String[] tLigneCoup = new String[st.countTokens()] ;
        while (st.hasMoreTokens()) { 
            tLigneCoup[indexCol] = st.nextToken();
            System.out.println(tLigneCoup[indexCol]);
            indexCol++;
        }
        tLignes.add(tLigneCoup);
    et lecture de l'arrayList<String[]>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int j=0; j<tLignes.size(); j++) {
        tLignes.get(j);
        for (int k=0; k<indexCol; k++) {
            System.out.println(tLignes.get(k).toString());
        }
    J'ai un problème de boucle et de syntaxe, c'est sur, mais où ?

    J'ai déjà fait des ArrayList<String[]> et des tableaux à 2 dimensions mais jamais en ne connaissant pas le nombre de colonnes au départ ni en Splitant une String et là, je rame.

    Je pense avoir déjà été plus près du but qu'avec ce dernier code mais j'ai fait tellement de tests différents que je n'ai pas tout gardé.

    Votre aide est donc vraiment la bienvenue !

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Déjà, pourquoi utiliser un StringTokenizer quand tu peux utiliser String.split?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé avec le Split mais Split("|") = Split à chaque caractère.
    J'ai donc essayé avec ligneLue = ligneLue.replace("|", ";").
    Là ça marche - mais je pense que je fais une erreur soit dans ma boucle de remplissage, soit dans ma boucle de lecture.

    Remplissage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while (ligneLue != null) {
        indexCol=0;
        if (ligneLue.matches("R.*")) { //je test si ma ligne commence par R
            ligneLue = ligneLue.replace("|", ";");
            aLignes.add(ligneLue); //je rempli ArrayList aLignes pour fichier csv
                                
            //boucle pour remplir ArrayList[] tLignes pour traitements
            for (int i=0; i<ligneLue.length(); i++) { 
                tLignes.add(indexCol, ligneLue.split(";"));
                indexCol++;
             }
        }
    }
    Lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int j=0; j<tLignes.size(); j++) {
        tLignes.get(j);
        for (int m=0; m<indexCol; m++) {
            System.out.println(tLignes.get(m));
        }
    }
    Merci vraiment pour ton aide.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par eskabo Voir le message
    J'ai essayé avec le Split mais Split("|") = Split à chaque caractère.
    Ah, ce doit être le coup du split() Java qui prend une regex en paramètre au lieu d'une chaîne simple.

    Je ne connais que peu le Java, mais je pense que tLignes.get(j); tout seul ne fait pas grand-chose.

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int j=0; j<tLignes.size(); j++) {
        String[] ligneCourante = tLignes.get(j);
        for (int m=0; m<ligneCourante.size(); m++) { //Ou un truc équivalent, je ne sais plus comment marchent les tableaux Java
            System.out.println(ligneCourante.get(m));
        }
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup Médinoc, j'y suis enfin arrivé

    Pour le Split, c'est surement comme tu dis car ça marche nickel sauf avec le tube ("|").

    Pour le reste, je faisais une boucle de trop au remplissage.

    Je déclare et créé mes ArrayList (une de String pour le csv et une de String[] pour les traitements) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<String> aLignes = new ArrayList<String>();
    ArrayList<String[]> tLignes = new ArrayList<String[]>();
    Je les rempli dans ma boucle tant que ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (ligneLue.matches("R.*")) { //je test si ma ligne commence par R
        ligneLue = ligneLue.replace("|", ";"); //je remplace | par ;
        aLignes.add(ligneLue); //je rempli ArrayList aLignes pour fichier csv
                         
        tLignes.add(ligneLue.split(";")); //je rempli ArrayList[] tLignes pour traitements
    }
    et enfin les boucles pour l'affichage de tLignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int j=0; j<tLignes.size(); j++) {
        String[] ligneCourante = tLignes.get(j);
        for (int m=0; m<ligneCourante.length; m++) {
            System.out.println(ligneCourante[m]);
        }
    }
    Grâce à String[] ligneCourante = tLignes.get(j); j'ai pu constater que j'écrivais plusieurs fois la même ligne et que j'avais donc une boucle de trop au remplissage.
    Maintenant j'arrive aussi à n'afficher qu'une colonne de mon ArrayList de tableaux (le but de ce code en fait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int r=0; r<tLignes.size(); r++)
        System.out.println(tLignes.get(r)[22]); //récupération colonne 22
    Merci vraiment Médinoc. Je commençais à désespérer de ne jamais y arriver...

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

Discussions similaires

  1. Convertir une string en tableau de caractères
    Par alainpeniche dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 20h00
  2. Réponses: 1
    Dernier message: 24/12/2005, 14h18
  3. String comme tableau de caracteres
    Par malek_dz77 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/12/2005, 19h11
  4. char *, string et tableau statique ou dynamique
    Par salseropom dans le forum C
    Réponses: 2
    Dernier message: 05/12/2005, 11h33
  5. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42

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