Aus einem Text bestimmte Wörter auslesen

  • Hallo,
    bin durch Zufall beim Googlen auf dieses Forum gestoßen und fand es klasse wie hier Leuten geholfen wird, deshalb dachte ich mir, fragst du auch mal hier vielleicht kann dir ja jemand helfen.

    Und zwar habe ich ein Problem mit einem ausgelesenem "Wert".

    Mein Script:

    Spoiler anzeigen
    [autoit]

    Func _ReadFile() Local $hFile = FileOpen(@ScriptDir &"\Zahlencode.txt") Local $sSearch, $iMatchLine, $sCurrentLine, $iCurrentLine $sSearch &= GUICtrlRead($combo1) & "|" $sSearch &= GUICtrlRead($combo2) & "|" $sSearch &= GUICtrlRead($combo3) & "|" $sSearch &= GUICtrlRead($combo4) & "|" $sSearch &= GUICtrlRead($combo5) & "|" $sSearch &= GUICtrlRead($combo6) & "|" $sSearch &= GUICtrlRead($combo7) & "|" $sSearch &= GUICtrlRead($combo8) & "|"
    $iCurrentLine = 1 ;Zeile 1 -> Anfang $iMatchLine = 0
    While True $sCurrentLine = FileReadLine($hFile) If @error Then ExitLoop If StringInStr($sCurrentLine, $sSearch) Then $iMatchLine = $iCurrentLineExitLoop EndIf $iCurrentLine += 1 ;Zeilennummer erhöhen. $sCurrentLine = "" ;Zurücksetzen wegen dem Ergebnis-Handling WEnd $sID = StringReplace($sCurrentLine, $sSearch, "") FileClose($hFile) _ReadFile1($sID)EndFunc ;==>_ReadFileFunc _ReadFile1($sID) Local $hFile = FileOpen("Zahlen_Wörter.txt") Local $iMatchLine, $sCurrentLine, $iCurrentLine, $sHD $iCurrentLine = 1 ;Zeile 1 -> Anfang While True $sCurrentLine = FileReadLine($hFile) If @error Then ExitLoop If StringInStr($sCurrentLine, $sID) Then $iMatchLine = $iCurrentLine ExitLoop EndIf $iCurrentLine += 1 ;Zeilennummer erhöhen. $sCurrentLine = "" ;Zurücksetzen wegen dem Ergebnis-Handling WEnd MsgBox(0, "", "Übereinstimmung in Zeile " & $iMatchLine & @CRLF & @CRLF & $sCurrentLine) FileClose($hFile)
    EndFunc ;==>_ReadFile1

    [/autoit]




    Erklärung des Script's und des Ablaufes:
    Mein Script liest die Werte aus den Comboboxen aus, wo Zahlen drin stehen (Zahlen von 1 bis 10).
    Diese werden dann in der Variable $sSearch gespeichert. Danach wird überprüft ob diese Zahlenkette in der Textdatei vorhanden ist. Wenn diese Zahlenkette vorhanden ist, speichert die Variable die Nummer, die die Zahlenkette hat (Wird hinter der Zahlenkette mit |1 usw. gekennzeichnet). Die Zahlenkette wird so in der Textdatei aufgebaut: 9|3|5|2|7|4|10|1|1 (Die Fett gedruckte Zahl gibt hier die Nummer von der Zahlenkette an). Also die letzte Zahl wird in der Variable $sID gespeichert und in den zweiten Func übernommen. Im zweiten Func wird dann die Textdatei "Zahlen_Wörter.txt" geöffnet und dort wird dann nach der Variable $sID gesucht und wenn diese Zahl gefunden wurde, wird die komplette Zeile in die Variable $sCurrentLine gespeichert und ausgegeben. (Die Textdatei ist so aufgebaut: Hallo|Hans|Meier|1 wobei die fett gedruckte Zahl wieder die Nummer der Zahlenkette darstellt die mit $sID abgeglichen und gleich sein muss).
    Das zur Erklärung von dem Script.


    Mein Problem ist jetzt folgendes:
    Ich möchte gerne die 3 Wörter, die am Ende in der Variable $sCurrentLine gespeichert und ausgegeben werden jeweils in einer Variable haben. Also das erste Wort (Hallo) in Variable $Wort1, das zweite Wort (Hans) in Variable $Wort2 und das dritte Wort (Meier) in Variable $Wort3. Ich habe darauf hin ein wenig rum gegooglet und gesehen das es eine Möglichkeit gibt, in einer Zeile das x te Wort auszulesen aber ich weiß nicht wie ich es benutze.
    Vielleicht weiß einer von euch auf Anhieb was ich falsch mache und/oder wie ich was ändern muss damit es Funktioniert.

    Ich hoffe ich habe mich deutlich genug ausgedrückt das man mich versteht  ?(


    Sonst bitte eben sagen was man noch Wissen muss dann werde ich es dazu Editieren.


    Vielen Dank schonmal :)


    Mit Freundlichen Grüßen
    J3t-Forc3

  • Hi,

    Zitat

    Also das erste Wort (Hallo) in Variable $Wort1, das zweite Wort (Hans) in Variable $Wort2 und das dritte Wort (Meier) in Variable $Wort3

    [autoit]

    stringsplit()

    [/autoit]

    ist dein Freund, die Rückgabe erfolgt in einem Array!

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    $zeile="Hallo|Hans|Meier|1"

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

    $wort=stringsplit($zeile,"|",3)

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

    _arraydisplay($wort)

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

    for $woerter in $wort
    msgbox(0,0,$woerter,1)
    next

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

    for $i=0 to ubound($wort)-1
    msgbox(0,0,"Wort "&$wort[$i]&" an Position "&$i,1)
    next

    [/autoit]

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (4. Juni 2013 um 20:57)