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

VB.NET Discussion :

[VB.NET] Lire des champs sans séparateur dans un fichier


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [VB.NET] Lire des champs sans séparateur dans un fichier
    Bonjour à tous,

    Après de longues recherches sur google et dans l'aide MSDN (sans compter l'aide précieuse du meilleur tuto possible), je n'ai pas réussi à lire les champs d'un fichier dont je dois traiter les lignes.

    Une ligne du fichier se présente ainsi :

    0611.0010H9160 021106Association WA F200611.001 434.15 0.00021106 434.15

    Numero de facture
    Numero de facture complet
    Numero de client
    Date de création
    Nom du client

    Comme vous le voyez, il n'ya pas de séparateur, et il faut savoir que les champs ont des tailles variables.

    Il faudrait que je puisse extraire chacun de ces champs.. Le vrai problème c'est qu'il n'y a pas de séparateur.

    Si vous avez une idée, je suis preneur. J'arrive à extraire une ligne dans une variable String, mais il faudrait ensuite pouvoir la traiter.

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de Deepin
    Homme Profil pro
    Ingénieur - Chef de projet Modélisation/Simulation
    Inscrit en
    Avril 2004
    Messages
    3 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Ingénieur - Chef de projet Modélisation/Simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 164
    Points : 51 026
    Points
    51 026
    Par défaut
    sans pouvoir définir de règles immuables il n'y a pas de solution à ton problème.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    Citation Envoyé par LiioR
    0611.0010H9160 021106Association WA F200611.001 434.15 0.00021106 434.15
    en effet et c'est logique sans règle précise de remplissage de ce fichier, tu ne pourras pas en tirer grand chose
    par contre y a ptete moyen d'y "voir" une "norme"
    si le numéro de facture complet commence toujours par F alors tu peux chercher la correspondance entre le numéro pas complet et le numéro complet en cherchant les caractère similaires au début et apres le F
    donc avant le F tu as une autre donnée ...

    les fonctions de manipulations de chaine sont surtout dans l'espace de nom Microsoft.Visualbasic (left, right, mid, len, instr ...)

    et bonne chance

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Moi j'ai surtout l'impression que quelqu'un pourrait utiliser une expression rationnelle pour faire ça...
    Cela me semble être la solution la plus efficace.
    J'essaie de faire quelques tests rapides et je te donne les résultats.

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Voici une expression qui fait une partie du travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<ShortInvoiceId>^[0-9\.]*)(?<ClientId>.*?) (?<InvoiceDate>[0-9]{6})(?<Client>.*) (?<LongInvoiceId>F20[[0-9\.]*)
    Elle extrait (avec des groupes nommés) :
    • Le numéro de facture court (des nombres et des points avant un espace)
    • L'id du client (tout ce qui suit avant un espace)
    • La date (6 caractères numériques)
    • Le nom du client (tout ce qui est avant le numéro long)
    • Le numéro de facture long (des chiffres et des points sans espaces)

    Pour le reste tu peux t'inspirer de ce qui est déjà fait pour extraire les autres champs.

    Edit : Comme c'est ton jour de chance, voici une expression salade-tomate-oignon (cad 'avec tout') :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<ShortInvoiceId>^[\d\.]*)(?<ClientId>.*?) (?<InvoiceDate>\d{6})(?<Client>.*) (?<LongInvoiceId>F20[\d\.]*) (?<NumberOne>[\d\.]*) (?<NumberTwo>[\d\.]*) (?<NumberThree>[\d\.]*)


    REDIT : Il y avait un problème dans la séparation entre le numéro de facture court et le numéro client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<ShortInvoiceId>^\d{4}\.\d{3})(?<ClientId>.*?) (?<InvoiceDate>\d{6})(?<Client>.*) (?<LongInvoiceId>F20[\d\.]*) (?<NumberOne>[\d\.]*) (?<NumberTwo>[\d\.]*) (?<NumberThree>[\d\.]*)

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2012, 11h42
  2. Comment lire des valeurs de paramètres dans un fichier ?
    Par timbrochier dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2010, 12h11
  3. [Spip] Ajouter et lire des champs dans la base de données Spip
    Par tim1789 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 20/12/2008, 23h21
  4. Lire des champs dans une fichier texte
    Par darkman13130 dans le forum C++Builder
    Réponses: 17
    Dernier message: 06/06/2008, 16h31
  5. Réponses: 2
    Dernier message: 29/01/2007, 14h14

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