2 Fragen: Zeile in Editbox löschen / Bestimmte Wörter finden

  • Hallo zusammen,

    ich habe zwei Probleme die ich nicht in den Griff bekomme:

    1. Ich habe eine Editbox und möchte eine bestimmt Zeile am besten nach Index löschen, leider finde ich keine Funktion die das könnte. Hat das schon mal jemand umgesetzt?

    2. Ich habe einen Text der an verschiedenen Stellen Platzhalter enthält die immer @@ oder ## vorangestellt haben. Z.B. könnte in diesem Text @@haus, @@nr, @@strasse enthalten sein. Ich würde gerne die Möglichkeit haben alle diese Platzhalter in ein Array zu schreiben. Das mit dem Array ist auch kein Problem, ich weiß nur nicht wie ich nach den Platzhaltern suchen soll. Die haben ja alle unterschiedliche Längen, fangen aber immer mit diesen zwei Zeichen an. Gibt es da eine Möglichkeit? Dieser Text wird in eine Editbox kopiert. Die Suche kann direkt in der Box passieren oder auch erst in eine Variable geschrieben werden um die Suche durchzuführen. Da ich noch keinen Weg gefunden habe wäre ich da ganz offen ^^

    Wäre super wenn mir da jemand einen tip geben könnte.


    Danke!

    Einmal editiert, zuletzt von nasgul (11. Februar 2011 um 16:34)

  • 1. Ich habe eine Editbox und möchte eine bestimmt Zeile am besten nach Index löschen, leider finde ich keine Funktion die das könnte. Hat das schon mal jemand umgesetzt?


    Das lässt sich ganz einfach lösen:
    *Edit via GuiCtrlRead einlesen
    *zurückgegebenen String mit StringSplit aufteilen (Trennzeichen : @crlf) <-- Damit StringSplit keine Leeren Zeilen im Array erzeugt mit Flag 1 ausführen
    *Array in einer For Schleife durchgehen oder mit _ArrayDelete gleich die Zeilen mittels ID löschen (Achtung $Array[0] enhält noch die Anzahl der Elemente...kann man ausschalten mit Flag 2 bei StringSplit (1+2))
    *Array zu einem String zusammensetzen (_ArrayToString)
    *Edit Daten wieder setzen (GuiCtrlSetData)

    Zu2: Das ginge mit StringRegExp..


    [autoit]

    #include <Array.au3>
    $sString = "Franz jagt im komplett verwahrlosten @@1 quer durch @@2 ##abcde"
    $aRet = StringRegExp($sString,"((?:@@|##)[\d\w]+)",3)
    _ArrayDisplay($aRet)

    [/autoit]
  • Hallo und vielen vielen Dank!

    Du hast mir sehr geholfen, mit deinen Tips konnte ich jetzt alles umsetzen. Das mit StringRegExp versteh ich aber nicht wenn ich ehrlich bin. Was bedeutet: "((?:@@|##)[\d\w]+)" ?

    Ich muss jetzt noch nach einer E-Mail-Adresse im Text suchen, komme aber mit dieser Angabe einfach nicht zurecht. Ich würde jetzt nach ?:@ suchen richtig? Aber was kommt dahinter? Wäre nett wenn du mir da kurz einen Satz zu schreiben könntest, auch wenn das eigentliche Thema schon gelöst ist.


    Danke

  • 1. Ich habe eine Editbox und möchte eine bestimmt Zeile am besten nach Index löschen, leider finde ich keine Funktion die das könnte. Hat das schon mal jemand umgesetzt?


    Zu Regulären Ausdrücken gibts ein Tutorial (Link)

    2: Ich hab dir mal einen gemacht. ([\d\w_\-\.]+@[\d\w_\-\.]+\.\w+)

    [autoit]

    $sString = "Hi meine Email Addresse ist [email='email@hallo.de'][/email] ."
    $aRet = StringRegExp($sString,"([\d\w_\-\.]+@[\d\w_\-\.]+\.\w+)",3)
    _ArrayDisplay($aRet)

    [/autoit]
  • Ich werde mir das Tutorial anschauen, danke!

    Mit deinem Code konnte ich nun diesen Teil meines Skriptes abschließen, vielen Dank!