String Wörter zusammensetzen

  • Hallo,

    ich habe folgendes Problem.
    In meinem String ist ein umfangreicher Text.
    Dieser Text wird mit Stringsplit bearbeitet.

    Daraus wird dann ein Dateinamen generiert.

    Beispiel:
    Wort1-Wort2-Wort3.txt

    Irgendwie habe ich im Loop was falsch gemacht

    Mein Code

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $String = "Das ist Text1 und so. Wir haben drei Tage. Das ist Text2. Es geht wieder. Das Text3"
    Global $stringlang = StringSplit($String, ".", 2); Text mit Punkt getrennt

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

    For $f = 0 To UBound($stringlang) - 1

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

    MsgBox(0, "3 Wörter", $stringlang[$f], 2)
    $datei = StringRegExp($stringlang[$f], '(.*?)\s(.*?)\s(.*?)\s', 3) ; Ich hrauche 3 Wörter
    _ArrayDisplay($datei, "Alle Wörter")

    For $t = 0 To UBound($datei) - 1
    MsgBox(0, "", $datei[$t], 1) ; hier werden die Wörter ermittelt

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

    Next
    $datei = $datei[0] & "-" & $datei[1] & "-" & $datei[2]; hier werden die Datei zusammengesetzt
    MsgBox(0, "", $datei & ".txt")
    Next

    [/autoit]

    Der erste Durchlauf stimmt. Aber dann stimmt nichts mehr

    Liebe Grüße
    Ilse :(

    Einmal editiert, zuletzt von Ilse (13. Juli 2012 um 15:03)

  • Nach dem ersten StringSplit() hast Du ab dem 2. Arrayelement ein führendes Leerzeichen !
    Dies wird im RegEx als erstes Wort erkannt.

    Ggf. einfach vorher mit StringStripWS(xxx,1) entfernen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo Micha,

    merci für die Hilfe
    aber stimmt leider immer noch nicht

    [autoit]


    #include <Array.au3>
    $String = StringStripCR ("Das ist Text1 und so. Wir haben drei Tage. Das ist Text2. Es geht wieder. Das Text3" & Chr(13) & Chr(10))

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

    Global $stringlang = StringSplit($String, ".", 2); Text mit Punkt getrennt

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

    For $f = 0 To UBound($stringlang) - 1

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

    MsgBox(0, "3 Wörter", $stringlang[$f], 2)
    $datei = StringRegExp($stringlang[$f], '(.*?)\s(.*?)\s(.*?)\s', 3) ; Ich hrauche 3 Wörter
    _ArrayDisplay($datei, "Alle Wörter")

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

    For $t = 0 To UBound($datei) - 1
    MsgBox(0, "", $datei[$t], 1) ; hier werden die Wörter ermittelt

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

    Next
    $datei = $datei[0] & "-" & $datei[1] & "-" & $datei[2]; hier werden die Datei zusammengesetzt
    MsgBox(0, "", $datei & ".txt")
    Next

    [/autoit]

    :( Ilse

  • Hallo,

    hab da ne Lösung,
    leider mit Error

    [autoit]


    #include <Array.au3>
    $String = StringStripCR ("Das ist Text1 und so. Wir haben drei Tage. Das ist Text2. Es geht wieder. Das Text3" & Chr(13) & Chr(10))

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

    Global $stringlang = StringSplit($String, ".", 2); Text mit Punkt getrennt

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

    For $f = 0 To UBound($stringlang) - 1

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

    MsgBox(0, "3 Wörter", $stringlang[$f], 2)
    $datei = StringRegExp($stringlang[$f], '(\w+)\s(.*?)\s(.*?)\s', 3) ; Ich hrauche 3 Wörter
    _ArrayDisplay($datei, "Alle Wörter")

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

    For $t = 0 To UBound($datei) - 1
    MsgBox(0, "", $datei[$t], 1) ; hier werden die Wörter ermittelt

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

    Next
    $datei = $datei[0] & "-" & $datei[1] & "-" & $datei[2]; hier werden die Datei zusammengesetzt
    MsgBox(0, "", $datei & ".txt")
    Next

    [/autoit]
  • So,

    ich glaube das stimmt so

    [autoit]


    #include <Array.au3>
    $String = ("Das ist Text1 und so. Wir haben drei Tage. Das ist Text2. Es geht wieder. Das Text3" )

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

    Global $stringlang = StringSplit($String, ".", 2); Text mit Punkt getrennt

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

    For $f = 0 To UBound($stringlang) - 1

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

    MsgBox(0, "3 Wörter", $stringlang[$f], 2)
    $datei = StringRegExp($stringlang[$f], '(\w+)\s(.*?)\s(.*?)\s', 3) ; Ich hrauche 3 Wörter
    _ArrayDisplay($datei, "Alle Wörter")

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

    For $t = 0 To UBound($datei)-1
    MsgBox(0, "", $datei[$t], 1) ; hier werden die Wörter ermittelt

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

    Next
    If IsArray($datei) Then
    ;$datei = $datei[0] & "-" & $datei[1] & "-" & $datei[2]; hier werden die Datei zusammengesetzt
    $datei = $datei[0] & "-" & $datei[1]; hier werden die Datei zusammengesetzt
    MsgBox(0, "", $datei & ".txt")
    EndIf

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

    Next

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

    Vielen Dank für den regex hinweis

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

    ;) Ilse

    [/autoit]