vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · HTML/Email   |   VB-Versionen: VB2005, VB200805.07.10
Alle EMail-Adressen eines Textes ausfiltern

Eine kleine aber nützliche Funktion, welche alle EMail-Adressen aus einem String (Text) ausfiltert und als Liste zurückgibt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  9.413 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Heute stellen wir Ihnen eine kleine aber nützliche Funktion vor, um alle EMail-Adressen aus einem String (Text) auszufiltern.

Anwendungsbereich ist zum Beispiel das Auslesen von "Maildelivery Subsystem Mails", die nicht explizit die falsche Emailadresse ausweisen, sondern diese im Body der Email "verstecken".

Zum Testen erstellen Sie bitte ein neues Projekt mit einer MultiLine-TextBox, einem Button, sowie eine ListBox. Beim Klicken auf den Button werden dann alle in der TextBox vorhandenen EMail-Adressen ausgefiltert und in der ListBox ausgegeben.

''' <summary>
''' Extrahiert alle im übergebenen Text enthaltenen EMailadressen
''' </summary>
''' <param name="Text">Text, der nach Mailadressen durchsucht werden soll</param>
''' <returns>Liste der Mailadressen</returns>
Public Function FilterEMail(ByVal Text As String) As List(Of String)
  Dim iPos As Integer = -1
  Dim startPos As Integer = 0
  Dim endPos As Integer = 0
 
  ' Neue Liste erstellen
  FilterEMail = New List(Of String)
 
  ' Gültige Zeichen
  Dim ValidChar(255) As Boolean
  For i As Integer = 0 To 255
    Select Case i
      Case 0 To 37, 39 To 43, 58 To 63, 91 To 94, 96, 123 To 222
        ValidChar(i) = False
      Case Else
        ValidChar(i) = True
    End Select
  Next 
 
  ' Text in Byte-Array konvertieren
  Dim buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(Text)
 
  ' Byte-Array durchlaufen und nach @-Zeichen suchen
  Do
    iPos = Array.IndexOf(buffer, CByte(64), iPos + 1)
    If iPos > 0 Then
 
      ' Beginn der Mailadresse suchen
      startPos = iPos - 1
      While startPos >= 0 AndAlso ValidChar(buffer(startPos)) = True
        startPos -= 1
      End While
 
      If startPos >= 0 Then
        ' Ende der Mailadresse suchen
        endPos = iPos + 1
        While endPos < buffer.Length AndAlso ValidChar(buffer(endPos)) = True
          endPos += 1
        End While
 
        ' Mailadresse der Liste hinzufügen
        FilterEMail.Add(System.Text.Encoding.ASCII.GetString( _
          buffer, startPos + 1, endPos - startPos - 1))
      End If
    End If
  Loop Until iPos < 0
End Function
Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
 
  ' alle in der TextBox enthaltenen Mailadressen in der ListBox anzeigen
  ListBox1.DataSource = FilterEMail(TextBox1.Text)
End Sub

Dieser Tipp wurde bereits 9.413 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel