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

Langage Java Discussion :

[Débutant] Parser csv, pas de valeur entre délimiteur.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Par défaut [Débutant] Parser csv, pas de valeur entre délimiteur.
    Bonjour,

    je besoin de parser un fichier CSV délimité par des tabulation mais certaines ligne du fichier n'ont pas de valeur sur certains champs.

    Voici un exemple de ligne sans valeur (J'ai remplacé les tabulations par des ; )

    id;name;add_name;description;popup;set_ids;set_bonus_desc;set_extra_id;set_extra_desc;unk[0];unk[1];special_enchant_amount;special_enchant_desc
    57;WeekEnd;;;-1;;;254;;0;0;0;
    Les ; collées sont donc les champs sans valeur.

    Voici mon code java pour parser les lignes:

    StringTokenizer st = new StringTokenizer(line, "\t");

    String id = st.nextToken();
    String name = st.nextToken();
    String addName = st.nextToken();
    String description = st.nextToken();
    String popup = st.nextToken();
    String setIds = st.nextToken();
    String setBonusDesc = st.nextToken();
    String setExtraId = st.nextToken();
    String setExtraDesc = st.nextToken();
    String unk0 = st.nextToken();
    String unk1 = st.nextToken();
    String specialEnchantAmount = st.nextToken();
    String specialEnchantDesc = st.nextToken();
    Mais avec ce code j'ai un NoSuchElementException à cause de l'absence de valeur entre deux délimiteur.

    Si vous avez une solution, je ne vois vraiment pas comment faire.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Bonsoir Nidel

    Tu peux utiliser split qui utilise les expressions régulières:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String tokens[]=line.split("\\t");
    Attention, pour que ce code fonctionne dans tous les cas, tu dois terminer ta ligne par un '\t' (à la pace de CRLF).

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/04/2014, 10h09
  2. Réponses: 5
    Dernier message: 29/09/2011, 16h55
  3. Réponses: 14
    Dernier message: 27/05/2008, 17h29
  4. Réponses: 7
    Dernier message: 11/09/2006, 18h45
  5. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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