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 :

interrogations sur split()


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut interrogations sur split()
    Bonjour,
    Je rencontre le problème suivant :
    un traitement est réalisé sur une ligne (d'un fichier texte) qui peut comprendre, en fonction du contexte 28, 29 ou 30 champs.
    Certains de ces champs ne sont pas systématiquement valorisés, . Par exemple, les champs n° 15 et 16 peuvent être vides, ainsi que les champs 29 et 30. Les champs vides existent bien, du fait de la présence de la tabulation qui est le délimiteur de champ et doivent être pris en compte.
    Chaque valeur est récupérée et renseigne un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String ligneLue = lignes_lnr.readLine();
    String [] ligneDecoupee;
     
    ligneDecoupee = ligneLue.split(\t);
     
    for (int i=0;i<ligneDecoupee.length;i++) {
    tablo2[i]=ligneDecoupee[i];
    Le problème : La ligne dont les champs 29 et 30 ne sont pas valorisés, "produit" un tablo2 de 28 indices. Pourtant, les champs 15 et 16 qui eux non plus ne sont pas valorisés, sont bien pris en compte.
    Si le champ 30 est valorisé, mais pas le champ 29, tablo2 comprend bien 30 indices, (dont certains ne sont pas valorisés, normal). Ce que je constate, c'est que tant qu'il y a un champ valorisé qui suit x champs vides, les x champs vides sont pris en compte. Si le ou les derniers champs de la ligne sont suivis d'un retour chariot marquant la fin de ligne, (et non d'un champ valorisé donc), il ne sont pas pris en compte dans tablo2.
    Comment puis-je palier à ce problème, sachant que la longueur (en nombre de champs) de la ligne est variable ?

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Par défaut split() ne retourne pas les derniers éléments vides.
    On peut forcer ce comportement en utilisant une limite infinie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligneDecoupee = ligneLue.split("\t", -1);
    a++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci de ta réponse adiGuba.
    J'hésitais à renseigner le 2ème param de split() en lui indiquant la longueur max (30 champs) que peut faire la ligne, ce qui marche aussi mais comprend des risques évidents.
    Ta solution me plait beaucoup plus.

    Cordialement

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

Discussions similaires

  1. Interrogation sur le but de ce forum?
    Par Extra-Nitro dans le forum Contribuez
    Réponses: 3
    Dernier message: 03/09/2006, 22h21
  2. Interrogations sur SQL Server XE
    Par cnguyen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/08/2006, 15h57
  3. Interrogation sur la conception d'une table
    Par catoucat dans le forum Modélisation
    Réponses: 4
    Dernier message: 05/07/2006, 10h38
  4. [CKEditor] Interrogations sur la sécurité de cet éditeur
    Par hisy dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 12/05/2006, 14h56
  5. Petite interrogation sur les z-index et div
    Par Delphy113 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/02/2006, 21h09

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