Bestimmte Zeilen aus Datei löschen
-
hi,
gibt es eine möglichkeit in einer textdatei eine bestimmte stelle zu finden und diese zu löschen? Also z.B. aus dieser:-------------
23
Irgend ein Text.
und noch mehr text.
-------------das wort "mehr" suchen und löschen. Geht das? wenn ja, wie?
Hab schon danach gesucht, hab aber nix passendes gefunden...
Danke!
Chips
-
Lies die ganze Datei in einen String (oder StringBuilder) ein, such nach "mehr" und lösche es aus dem String. Anschließend überschreibst du die Datei mit deinem String.
Das wäre ein möglicher und einfacher Ablauf.
Wo genau hast du denn Probleme? Beim einlesen der Datei, suchen, ersetzen oder schreiben der Datei?Greetz
-
hey, thx...
sowas änliches hab ich mir auch schon gedacht... ich hab noch probleme beim suchen und beim löschen.
thx
chips
-
Also mit System::String::IndexOf kannst du die Position eines Zeichens in einem String suchen. Wenn du eine ganze Zeile löschen willst, suchst du am Besten erstmal nach dem Wort. Anschließend guckst du wo das NL vor und hinter diesem Wort ist und löschst diesen Bereich mit einem der beiden NLs (eventuell ist kein NL davor, dann musst du alles vom Stringanfang bis zum nächsten NL löschen oder wenn kein NL dahinter kommt alles vom letzten bis zum Ende, aber das kriegste schon hin).
Zum löschen kannst du System::String::Remove verwenden, welches als Parameter den Index erwartet ab dem gelöscht werden soll und die Anzahl Zeichen die gelöscht werden sollen.System::String ^str = gcnew System::String("Dies ist ein String\nmit zwei Zeilen."); int posWord = str->IndexOf("zwei"); int nlBeforeWord = 0; int tmp=0; while((tmp = str->IndexOf('\n', nlBeforeWord)<posWord) nlBeforeWord = tmp; int nlBehindWord = str->IndexOf('\n', posWord); if(nlBehindWord==0) nlBeforeWord = str->Length; str->Remove(nlBeforeWord, nlBhindWord-nlBeforeWord+1);
So in etwa müsste das aussehen um die Zeile zu löschen. Habe ich jetzt so ausm Kopf geschrieben, ist also nicht getestet, aber ich hoffe es hilft.
Greetz
-
Alternativ könntest du auch folgendes probieren:
StringBuilder sb = new StringBuilder("Das ist mein Text mit mehr Inhalt", 50); sb.Replace('mehr ', '');