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.
Text aus mehreren dateien auslesen und ersetzen...aber!
Text aus mehreren dateien auslesen und ersetzen...aber!
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
- NicTheQuick
- Ein Admin
- Beiträge: 8838
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
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.
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!
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()
NextPureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
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.
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.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Re: Text aus mehreren dateien auslesen und ersetzen...aber!
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.N_Gnom hat geschrieben:in jedem fall müsste man aber alle dateien gleichen typs in einem ordner so bearbeiten können.