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 un email depuis une chaîne


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut Extraire un email depuis une chaîne
    Bonjour

    Je cherche comment je peux extraire un email depuis une chaîne de caractère


    Cordialement

  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 : 44
    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
    Le plus simple est d'utiliser une expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Shared Function ExtractEmailAdress(input As String) As String
    	Dim regex As New Regex("[A-Z0-9.]+@[A-Z0-9.-]+\.[A-Z]{2,4}", RegexOptions.IgnoreCase)
    	Dim match As Match = regex.Match(input)
    	If match.Success Then
    		Return match.Value
    	End If
    	Return Nothing
    End Function

  3. #3
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut
    Merci beaucoup

    Mais un petit problème comment je peux récupéré toutes les emails qui existe dans une chaîne

    exp "koko@gmail.com oup je doit dormir la @gmail.com"

    dans ce petit code que tu as donné me récupère juste le premier email trouvé.


    Merci une autre fois noble tomlev

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    En utilisant la méthode Matches au lieu de Match
    http://msdn.microsoft.com/fr-fr/library/e7sf90t3.aspx

  5. #5
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut
    Merci voila la solution


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Shared Function ExtractEmailAdress(ByVal input As String) As Object
            Dim regex As New Regex("[A-Z0-9.]+@[A-Z0-9.-]+\.[A-Z]{2,4}", RegexOptions.IgnoreCase)
            Dim match As Match = regex.Match(input)
            Dim i As Integer = 0
            Dim tab(1000000) As String
            Do While match.Success
                tab(i) = match.Value
                match = match.NextMatch()
                i += 1
            Loop
            Return tab
     
        End Function
    Cordialement

  6. #6
    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 : 44
    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
    Il y a des choses qui ne vont pas du tout dans ton code...

    Déjà, pourquoi tu mets Object comme type de retour de la fonction, alors que tu renvoies un tableau de String ?

    D'autre part, c'est une très mauvaise idée de créer un tableau de 1 million de String alors qu'il n'y en aura sans doute que quelques unes au final... Quand tu ne sais pas à l'avance de quelle taille tu as besoin, utilise une liste, pas un tableau.

    Et de toutes façons, tu peux savoir combien il y de résultats à renvoyer, en utilisant Matches au lieu de Match, comme dans mon code.

    Si tu tiens à utiliser un tableau plutôt qu'une liste, tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Shared Function ExtractEmailAdresses(input As String) As String()
    	Dim regex As New Regex("[A-Z0-9.]+@[A-Z0-9.-]+\.[A-Z]{2,4}", RegexOptions.IgnoreCase)
            Dim matches As MatchCollection = regex.Matches(input)
            Dim emails(matches.Count - 1) As String
    	For i = 0 To matches.Count - 1
                emails(i) = matches(i).Value
    	Next
            Return emails
    End Function

  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 : 44
    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 ryodo Voir le message
    exp "koko@gmail.com oup je doit dormir la @gmail.com"

    dans ce petit code que tu as donné me récupère juste le premier email trouvé.
    Bah il n'y a qu'un seul email dans ce texte... "@gmail.com" n'est pas une adresse email valide.

    Cela dit, le code que je t'ai donné ne récupère effectivement qu'une adresse. Pour récupérer une liste d'adresses tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Shared Function ExtractEmailAdresses(input As String) As List(Of String)
    	Dim regex As New Regex("[A-Z0-9.]+@[A-Z0-9.-]+\.[A-Z]{2,4}", RegexOptions.IgnoreCase)
            Dim emails As New List(Of String)
    	For Each m As Match in regex.Matches(input)
                emails.Add(m.Value)
    	Next
            Return emails
    End Function

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

Discussions similaires

  1. Poster un Email depuis une page ASP.net 2.0
    Par Delphi-ne dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/04/2008, 12h18
  2. [Débutante] Extraire un mot d'une chaîne
    Par biba13 dans le forum Pascal
    Réponses: 12
    Dernier message: 16/04/2008, 16h08
  3. Réponses: 21
    Dernier message: 28/01/2008, 21h56
  4. [debutant C++] Extraire un caractère d'une chaîne
    Par Ministar dans le forum Débuter
    Réponses: 12
    Dernier message: 23/10/2006, 19h25
  5. [Tableaux] Extraire les chiffres dans une chaîne
    Par Digiduck dans le forum Langage
    Réponses: 8
    Dernier message: 16/08/2006, 15h33

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