textbereich suchen und ersetzen bzw. löschen

  • hallo leute,

    ich möchte in einer text-datei einen ganzen text-bereich suchen und ersetzen bzw. löschen.

    die anzahl der zeilen und zeichen bzw. der restliche inhalt des bereiches können variieren. das einzige,
    was immer gleich ist, sind zwei gleiche kommentar-zeilen am anfang und am ende des bereichs:

    ;====DATEN-BEREICH===

    ....
    ....
    ....

    ;====DATEN-BEREICH===


    ich hab mir schon die diversen string- und array-funktionen angesehen, aber noch keinen plan, wie ich das
    problem angehe geschweige denn löse. die suche hier im forum hat mir bisher auch noch keinen lösungs-
    ansatz gezeigt.

    weiss jemand rat?

    so long

    sam

    3 Mal editiert, zuletzt von sam ghost (22. Dezember 2010 um 12:56)

  • Spoiler anzeigen
    [autoit]

    #include <String.au3>
    $sString = FileRead("pfad zur Datei")
    $aResult = _StringBetween($sString, ";====DATEN-BEREICH===", ";====DATEN-BEREICH===", 1)
    If IsArray($aResult) Then
    MsgBox(0, 0, $aResult[0])
    Else
    MsgBox(0, 0, "Nichts gefunden")
    EndIf

    [/autoit]
  • eventuell so

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    $sString = "Dies ist der Erste Teil des Strings" & @CRLF & "Dies ist die Kommentarzeile" & @CRLF & "Dies ist die Zwischenzeile" & @CRLF & "Dies ist die Kommentarzeile" & @CRLF & "Dies ist der Letzte Teil"
    $sKommentarzeile = "Dies ist die Kommentarzeile" & @CRLF
    $aString = StringSplit($sString, $sKommentarzeile, 1)
    _ArrayDelete($aString, 2)
    MsgBox(0,"",_ArrayToString($aString, "", 1))

    [/autoit]
  • Na wenn wir schon dabei sind alle Möglichkeiten durchzuspielen ...

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $sString = FileRead("pfad zur Datei")
    ;findet den gesamten Bereich inkl. ;====DATEN-BEREICH===
    $aResult = StringRegExp($sString, "(?s)(;====DATEN-BEREICH===.*?;====DATEN-BEREICH===)", 1, 1)
    ;findet alles zwischen den Zeilen ;====DATEN-BEREICH===
    ;$aResult = StringRegExp($sString, "(?s);====DATEN-BEREICH===\r\n(.*?);====DATEN-BEREICH===", 1, 1)

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

    If IsArray($aResult) Then
    MsgBox(0, 0, $aResult[0])
    Else
    MsgBox(0, 0, "Nichts gefunden")
    EndIf

    [/autoit]