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 le debut d'un chaine


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut extraire le debut d'un chaine
    bonjour

    j'aimerais extraire le début d'une chaine du type

    15-28/05/2010 10:52
    ou encore
    1-12/12/2009 15:52

    en faite il faut que j'extrais tout ce qu'il y a avent "-"

    j'ai trouve comment extraire un nombre de caractère déterminer
    mais dans ce cas la on ne peut pas déterminer le nombre de caractère a extraire

    vous avez une idée ?

    cordialement

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Je ne me souviens plus si il existe une fonction te permettant d'isoler la chaîne à gauche d'un symbôle particulier mais il y a cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Left(machaine,Instr("-",machaîne)-1)
    Le fonction Instr renvoie la position du caractère (ou de la chaîne) que tu lui demandes. donc il faut que tu mettes -1 pour la taille à récupérer. Il y a peut-être mieux ^^ Si tu veux virer les espaces, il faut que tu fasses un replace

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Dépend ce que tu appel extraire ?
    Si pour toi extraire c'est récupérer alors :

    2 méthodes, soit tu détecte la première occurrence de - et comme cela tuas le nombre de caractères à extraire...

    soit tu passe par les expressions régulières et le pattern matching.

    si tu te sens pas à l'aise avec les expressions régulières et si ton traitement ne se fait pas sur 1000 lignes successives, fait le avec la première méthode, sinon utiliser des Regex compilées est une meilleur approche.

    1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim r as String = String.Empty
    Dim a As String = "15-28/05/2010 10:52"
    Dim i as integer = a.IndexOf("-")
     
    if i >= 0 then r = a.SubString(0, i-1)
    A la fin r contient la sous chaine catchée soit 15

    2.
    ici il faut inclure System.Text.RegularExpressions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim r As String = String.Empty
    Dim a As String = "15-28/05/2010 10:52"
    Dim ex As Regex = New Regex("^(\d+)-",RegexOptions.Compiled)
    Dim m as Match = ex.Match(a)
    if m.Success Then
      r = m.Groups(1).Captures(0).Value
    End If
    La seconde méthode s'intègre parfaitement dans une boucle de traitement sur un tableau de string en entrée, et à l'avantage d'être très rapide une fois la phase d'instanciation/compilation de l'expression régulière effectuée.
    Elle a l'avantage d'être également plus modulaire et permet donc à moindre frais de changer le pattern de capture aisément sans refaire tout le code.

    Si pour toi extraire c'est supprimer et ne conserver que ce qui suit...

    Toujours 2 approches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim r as String = String.Empty
    Dim a As String = "15-28/05/2010 10:52"
    Dim i as integer = a.IndexOf("-")
     
    if i >= 0 then r = a.Remove(0, i)
    Dans ce cas r contient : 28/05/2010 10:52

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim r as String = String.Empty
    Dim a As String = "15-28/05/2010 10:52"
    Dim ex As Regex = New Regex("^\d+-", RegexOptions.Compiled)
     
    r = ex.Replace(a, "")
    même principe et remarques pour la récupération en 2ème méthode.

  4. #4
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    @ sebnante

    j'ai utiliser ta solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim numpalo As String = Left(labelIDpalonier.Text, InStr(labelIDpalonier.Text, "-") - 1)
    t'avait juste inverser les propriété de Instr()


    @cinemania

    ca l'air compliqué tout ca



    merci de vos reponse

    cordialement

    alex

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Oups désolé ^^

  6. #6
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    pas grave

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut
    salut
    dans la classe string il y a une fonction qui fais cela c'est split.
    si on a la chaine suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim msg as string="salut-tout-le-monde"
    tu écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim mot as string()=msg.split("-")
    le resultat seras le suivant:
    mot(0) contiendra "salut"
    mot(1) contiendra "tout"
    mot(2) contiendra "le"
    mot(3) contiendra "monde"
    et donc la première partie de la chaine est mot(0)
    j'espère que cela t'aidera et a bientot

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

Discussions similaires

  1. Extraire un nom d'une chaine de caractere
    Par iamspacy dans le forum Linux
    Réponses: 4
    Dernier message: 03/05/2004, 21h34
  2. Afficher le debut d'une chaine de caractère
    Par spoun95 dans le forum Réseau
    Réponses: 5
    Dernier message: 22/02/2004, 16h48
  3. extraire le caratere d'une chaine
    Par keny dans le forum MFC
    Réponses: 2
    Dernier message: 06/02/2004, 16h30
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

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