StringSplit Problem

  • Hallo Leute
    hab mal versucht ein Skript zu basteln was aus einem Text alle E-Mail Adressen raussucht und ausgibt... leider funktioniert das nicht...


    [autoit]

    #include <Array.au3>
    MsgBox(1,"",_GetEMails(ClipGet()))
    Func _GetEMails($vText)
    Local $vStringSplit = StringSplit($vText,"@")
    _ArrayDisplay($vStringSplit)
    $vReturn = ""
    For $vCounter = 1 To $vStringSplit[0] Step +1
    $vUser = StringSplit($vStringSplit[$vCounter]," ")
    $vUserCount = $vUser[0]
    $vDomain = StringSplit($vStringSplit[$vCounter +1]," ") ;HIER LIEGT DER FEHLER, $vStringSplit[2] müsste theoretisch doch existieren oO...
    $vReturn &= $vUser[$vUserCount] & "@" & $vDomain[1] & @CRLF
    Next
    Return $vReturn
    EndFunc

    [/autoit]

    Demo Text

    Zitat

    Hallo ich bin Hans und meine E-Mail ist abc@defg.hi email@cool.com
    test@mail.com das hier ist eine weiter E-Mail adresse :D

    Danke mal im Voraus

    Grüße sl4y3r

  • Probier mal das folgende:

    [autoit]

    #include <array.au3>
    $s="Hallo ich bin Hans und meine E-Mail ist [email='abc@defg.hi'][/email] email@cool.com"&@CRLF& _
    "test@mail.com das hier ist eine weiter E-Mail adresse :D"
    $a = StringRegExp($s,"(\w+@\w+\.\w+)",3)
    If IsArray($a) = True Then
    _ArrayDisplay($a)
    Else
    MsgBox(0,"Nichts","-")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    #cs OUTPUT:

    [/autoit][autoit][/autoit][autoit]

    [0]|[email='abc@defg.hi'][/email]
    [1]|[email='email@cool.com'][/email]
    [2]|[email='test@mail.com'][/email]

    [/autoit][autoit][/autoit][autoit]

    #ce

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Hallo,

    Ich denke StringRexExp würde sich hier am besten eigenen..

    Meine Lösung (nicht perfekt)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sText = "Hallo ich bin Hans und meine E-Mail ist [email='abc@defg.hi'][/email] email@cool.com"&@CRLF&"test@mail.com das hier ist eine weiter E-Mail adresse"

    [/autoit] [autoit][/autoit] [autoit]

    $aEmail = StringRegExp($sText,"(\w+@[^.]+\.\w+)",3)
    If @error Then
    MsgBox(0,"Error",@error)
    Else
    _ArrayDisplay($aEmail)
    EndIf

    [/autoit]

    Edit:

    Viel zu langsam :pinch: