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 :

extraire une chaine entre un mot et un caractére


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut extraire une chaine entre un mot et un caractére
    Bonsoir,

    j'ai crée une fonction pour extraire le texte situé entre un mot et un caractère que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Public Function Extraction(ByVal attente As String) As String
            Dim motARechercher1 As String = "Intervention"
            Dim motARechercher2 As String = "Fin"
            Dim fin1 As Integer = attente.IndexOf(motARechercher1, 0, System.StringComparison.InvariantCultureIgnoreCase)
            Dim fin2 As Integer = attente.IndexOf(motARechercher2, 0)
            Return attente.Substring(fin1, fin2)
        End Function
    Lorsque la variable "attente" ce présente de ce façon pas de problème :

    Intervention 95407639
    transfert hospitalier
    urgent
    3 rue des lilas
    Fin


    Mais parfois il arrive que "attente" se présente de cette façon :

    Intervention 95407639
    transfert hospitalier
    urgent
    3 rue des lilas
    Fin
    Intervention 95407656
    transfert intra-hospitalier
    urgent
    3 rue de la république
    Fin


    et dans ce cas je récupère tous le texte alors que je voudrais récupéré seulement le texte situé avant la première apparition de "Fin", ceci :

    Intervention 95407639
    transfert hospitalier
    urgent
    3 rue des lilas
    Fin


    auriez vous une idée à me donner ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah je viens de tester ton code, pour moi ça fonctionne bien

    Par contre tu vas avoir un problème si par exemple l'adresse contient "Fin"... Tu ferais mieux de traiter ça ligne par ligne, et de t'arrêter quand la ligne entière est égale à "Fin"

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Oui j'ai fait un parcours ligne par ligne dans une méthode (Affiche_ASCII) qui appel la fonction (Extraction), que voici : (ça doit être ici que ça bug, car parfois ça fonctionne, j’obtiens bien tout avant fin et parfois j obtient plus que le mot fin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub Affiche_ASCII()
     
            For Each ligne As String In TextBox2.Text 'dans cette textbx j'ai toutes données avec plusieurs fois le mot Fin
                Try
                    TextBox1.Text = Extraction(Textbox2.Text)
                Catch ex As Exception
     
                End Try
            Next
        End Sub

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par gastoncs Voir le message
    : (ça doit être ici que ça bug, car parfois ça fonctionne, j’obtiens bien tout avant fin et parfois j obtient plus que le mot fin)
    C'est limpide .....

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par gastoncs Voir le message
    Oui j'ai fait un parcours ligne par ligne dans une méthode (Affiche_ASCII) qui appel la fonction (Extraction), que voici : (ça doit être ici que ça bug, car parfois ça fonctionne, j’obtiens bien tout avant fin et parfois j obtient plus que le mot fin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub Affiche_ASCII()
     
            For Each ligne As String In TextBox2.Text 'dans cette textbx j'ai toutes données avec plusieurs fois le mot Fin
                Try
                    TextBox1.Text = Extraction(Textbox2.Text)
                Catch ex As Exception
     
                End Try
            Next
        End Sub
    Ce code n'a aucun sens, tu n'utilises jamais la variable de boucle... en plus, tu boucles sur les caractères et non sur les lignes. Donc en fait tu exécutes Extraction autant de fois qu'il y a de caractères, ce qui ne sert à rien (une fois suffirait)

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    oui je comprend, mais je ne sais pas comment faire pour boucler sur les lignes !

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux faire un Split selon le caractère de saut de ligne, mais c'est pas très pratique ; perso je préfère utiliser un StringReader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Imports System.IO
     
    ...
     
    Using reader As New StringReader(TextBox2.Text)
        Dim line As String = reader.ReadLine()
        While line IsNot Nothing
            ...
            line = reader.ReadLine()
        End While
    End Using

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

Discussions similaires

  1. Extraire une chaine entre 2 caractères identiques
    Par nicomax34 dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2014, 10h39
  2. [RegEx] comment récupérer une chaine entre deux mots
    Par mat8883 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2012, 19h29
  3. Extraire une chaine entre parenthèse
    Par flo73 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/10/2010, 12h14
  4. Extraire une chaine entre guillemets
    Par grenouille2008 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/07/2008, 16h40
  5. Réponses: 14
    Dernier message: 12/12/2007, 17h08

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