Wie effizient Suchen und ersetzen?

  • Hallo zusammen,

    ich stehe vor dem Problem, dass ich einen mir unbekannten String fix "bearbeiten" muss. Der String ist sehr groß (ca. 500.000 Zeilen).

    Bisher habe ich es so probiert:

    Datei Zeile für Zeile einlesen
    Schauen, ob die Zeile den gesuchten Inhalt hat -> Inhalt ersetzen
    Dann die Zeilen wieder zusammenfügen
    Datei schreiben.

    Dieses Verfahren ist wohl sehr langsam. Denn die ersten 10.000 Zeilen sind in <1 Sekunden bearbeitet, ab Zeile 50.000 braucht er schon 22s für die nächsten 10.000 Zeilen. Das ganze explodiert dann regelrecht, so dass ich abbrechen musste.

    Nun die Frage, ob ihr ein anderes besseres Verfahren kennt.
    Das Problem ist, dass jede Zeile ein Schlüsselwort hat. Danach suche ich. Der Teil nach dem Schlüsselwort ist mir unbekannt und geht bis zum Zeilenumbruch und ausgerechnet der muss dann ersetzt werden. Mit Stringreplace kriege ich das nicht hin...

    Datei sieht z.B. also so aus:

    blablablaSchlüsselwortzuersetzenderText@CRLF
    blablabla
    blablablaSchlüsselwortzuersetzenderText@CRLF


    Hoffe ich konnte mich verständlich ausdrücken.
    Vielen Dank.

  • Hallo dost0011,

    wie wäre es, wenn du die gesamte Datei einliest und dann in ein Array überführst.

    Dann sollte es schneller gehen die Felder auszuwerten und entsprechend zu bearbeiten


    Gruß der Strahleman 8)

    Wenn denn alles so einfach wäre wie

    [autoit]

    "Autoit"

    [/autoit]

    meine UDFs
    Math2

    Wichtige Threads
    Math2

  • Poste doch einmal den Code mit dem du es bisher gelöst hast dann kann man diesen unter Umständen noch optimieren.
    Z.B. wird die Datei oftmals nicht nur einmal mit FileOpen geöffnet sondern bei jedem FileRead/Write immer wieder neu.
    Ansonsten kann man natürlich, wie bereits geschrieben, auch die Datei komplett als String einlesen, ersetzen, und wieder komplett schreiben.