Bonjour
Je cherche comment je peux extraire un email depuis une chaîne de caractère
Cordialement
Bonjour
Je cherche comment je peux extraire un email depuis une chaîne de caractère
Cordialement
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
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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
En utilisant la méthode Matches au lieu de Match
http://msdn.microsoft.com/fr-fr/library/e7sf90t3.aspx
Merci voila la solution
Cordialement
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
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
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager