Seite 1 von 1
Text aus mehreren dateien auslesen und ersetzen...aber!
Verfasst: 08.10.2013 18:28
von N_Gnom
Also ich bin kein genie in pb und frag deshalb nach eurer hilfe.
Ich muss mehrere html dateien durchsuchen.
In diesen gibt es einen String, welcher mit bspw. "hallo du pb benutzer" beginnt, und mit "bye" endet.
"bye" kommt aber im kompletten text aber mehrmals vor.
Es handelt sich aber um immer nur eine zeile.Also die zeile welche mit "hallo du pb benutzer beginnt" soll inclusive dem "bye" am ende der zeile gelöscht werden.
Notepad++ würde das auch hinbekommen, aber da sich ein teil des textes verändert, geht das nicht.
Vielleicht ist jemand von euch so schlau und kann mir auf die schnelle ein tool coden was sowas in der art hinbekommt.
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
Verfasst: 08.10.2013 19:36
von NicTheQuick
Was soll passieren, wenn in einer Zeile "hallo du pb benutzer bye bye" steht? Soll es dann beim ersten oder beim letzten bye enden?
Ansonsten sind für dein Problem Regular Expressions geeignet. Damit kann man sagen, dass etwas gefunden werden soll, was einem bestimmten Muster entspricht. In deinem Fall wäre es wohl etwas so in etwa das hier: "(^.*?)(hallo du pb benutzer.*?bye)(.*?$)". Das würde den zu löschenden Bereich finden und in drei Teile splitten. Das davor, das dahinter und den Bereich selbst.
ich kenne mich mit der Materie allerdings nicht so gut aus. Vielleicht hat der Ausdruck auch noch Optimierungspotential. Getestet habe ich es jedenfalls gerade nicht. Aber vielleicht möchtest du ja selbst damit rumspielen.
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
Verfasst: 08.10.2013 22:20
von Bisonte
evt. sowas banales ?
Code: Alles auswählen
NewList Zeile.s()
; --- entweder so einlesen
; hFile = ReadFile(#PB_Any, "DieHTMLDatei.html")
;
; If hFile
; While Not Eof(hFile)
; AddElement(Zeile()) : Zeile() = ReadString(hFile)
; Wend
; CloseFile(hFile)
; EndIf
; --- oder mal eben schnell erstellen
AddElement(Zeile()) : Zeile() = "<html><body>blablubberblubb"
AddElement(Zeile()) : Zeile() = "<html>hallo du pb benutzer<body>blablubbyelubb"
AddElement(Zeile()) : Zeile() = "<htmlbye><body>blablubberblubbbye"
AddElement(Zeile()) : Zeile() = "<html><body>blahallo du pb benutzerblubberbyeblubb"
If ListSize(Zeile())
ForEach Zeile()
a = FindString(Zeile(), "hallo du pb benutzer")
If a
b = FindString(Zeile(), "bye", a + 1)
If b
; --- Ganze Zeile löschen
; DeleteElement(Zeile())
; --- oder nur das stück rausschneiden
Zeile() = Left(Zeile(), a-1) + Right(Zeile(), Len(Zeile()) - b - 1)
EndIf
EndIf
Next
EndIf
ForEach Zeile()
Debug Zeile()
Next
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
Verfasst: 09.10.2013 13:24
von N_Gnom
Genau sowas....aber das müsste dann bspw. mit allen *.html dateien aus einem ordner automatisch passieren.
ach und @nic: alles zwischen string a und string b soll gelöscht werden.
ich müsste das mal von bisonte dann ausprobieren vllt. reicht es schon nach string a einfach nur die zeile zu löschen.
in jedem fall müsste man aber alle dateien gleichen typs in einem ordner so bearbeiten können.
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
Verfasst: 09.10.2013 13:50
von Nino
N_Gnom hat geschrieben:in jedem fall müsste man aber alle dateien gleichen typs in einem ordner so bearbeiten können.
Dann durchsuchst Du halt den betr. Ordner mit
ExamineDirectory() usw. nach allen passenden Dateien, und für jede dieser Dateien führst Du Bisontes Code -- leicht angepasst -- aus.