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

C# Discussion :

Parser des données


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut Parser des données
    Bonjour,

    Quelqu'un aurait-il une idée pour parser un texte de la forme ci-dessous ?
    nom1-Paramètre1;Parmètre2||nom2-Paramètre1;Paramètre2 etc...
    Juste le nom de la fonction C# à utiliser au pire, quelque chose qui me ferait avancer. C'est mon début dans ce langage et je dois dire que je galère énormément... Un peu d'aide des pro pour un débutant comme moi serait très sympatoch .

    Merci

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 26
    Par défaut Début de réponse
    string szChaine = "nom1-Paramètre1;Parmètre2||nom2-Paramètre1;Paramètre2"

    string []szTab = szChaine.split("||")

    après tu boucles sur le tableau

    for(int i = 0; i<szTab.lenght;i++)
    {
    ... tu peux faire un split sur le ; pr tes param
    }

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    C'est du découpage de chaine de caractères, la faq en parle.
    Selon ce que tu veux faire, tu peux utiliser l'objet Regexp qui utilise les expressions régulières, et/ou les méthodes de l'objet String comme split, substring, ....
    Je te laisse chercher un peu, mais tu verras vite qu'en C# c'est très facile de faire ce genre de chose

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    1) kinola, s'il te plait utilise les balises de code pour le code (dans l'éditeur de texte c'est le nouton #)
    2) Si c'est pour parcourir un tableau, une liste, ou autre chose d'énumérable, du début à la fin, c'est tellement mieux, et plus pratique d'utiliser un foreach
    3) dans la boucle, avant de splitter sur les ; le mieux est de faire un substring pour le nom en recherchant la premiere occurence de - pour connaître la longueur du nom.
    4) après le deuxieme split tu parcours de nouveau ton tableau par un foreach si tu en as besoin.
    5) syntaxe du foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string[] tabelt = "nom1-Paramètre1;Parmètre2||nom2-Paramètre1;Paramètre2".Split("||".ToCharArray());
    foreach (string elt in tabelt)
    {
    }
    6)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string []szTab = szChaine.split("||")
    Faux Split ne prend que des char ou des char[] comme séparateur. Mais tu peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string []szTab = szChaine.split("||".ToCharArray());
    7) tu oublis un peu tes points virgule.


  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    si y a 10mo de parametres, ce n'est pas un peu lourd le split ?

  6. #6
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    Si cela peut t'aider dans ton choix
    Personellement j'ai eu à faire ça il y a quelques semaines
    j'ai développé 3 solutions: 1) Split, search et autres fonctions de String
    2) expression régulière, 3) lecture caractère par caractère avec parcourt d'un diagrame d'état.

    au final
    1) code court, lisible et maintenable, vitesse d'execution 8 fois supérieurs à la solutions 3)
    2) Code court, moyennement lisible et maintenable, vitesse d'execution 30 fois supérieurs à la solution 3)
    3) Code important, difficile à lire (beaucoup d'imbrication), difficile à maintenir (même si j'ai mis pas mal de commentaires). Temps d'exécution le meilleur.

    Pour info, comme j'était en TDD, j'ai écrit une trentaine de tests, incluant tous les cas d'erreurs auxquelles j'ai pu penser. Et les 3 solutions les ont passé

    [edit]fautes de frappes et orth

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    bah après c'est à voir, la on parle de découpage de string de façon général et on ne s'était pas posé la question du volume de donnée.
    BigNic apporte des informations intéressante.
    Supposons que ces données soit dans un fichier texte et sur plusieurs ligne. Dans ce cas il est possible de parcourir le fichier ligne par ligne, et de traiter chaque ligne.
    Moins de données à mettre dans le buffer

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 167
    Par défaut
    Citation Envoyé par BigNic Voir le message
    au final
    1) vitesse d'execution 8 fois supérieurs à la solutions 3)
    2) vitesse d'execution 30 fois supérieurs à la solution 3)
    3) Temps d'exécution le meilleur.
    Euh... pour toi un meillleur temps d'exécution ça veut dire un plus court ou un plus long ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut
    Ok c'est parfait, merci
    Désolé si la soluce étais dans la faq, je penserais à regarder la prochaine fois.

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

Discussions similaires

  1. [SAX] Parser un fichier XML et exraire des données dans un matrice ou liste en JAVA
    Par chcheibani dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 21/03/2014, 15h26
  2. Réponses: 0
    Dernier message: 05/11/2009, 18h12
  3. Réponses: 1
    Dernier message: 28/09/2005, 15h35
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15
  5. Réponses: 2
    Dernier message: 18/12/2002, 10h30

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