Text aus mehreren dateien auslesen und ersetzen...aber!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

Text aus mehreren dateien auslesen und ersetzen...aber!

Beitrag 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.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Benutzeravatar
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!

Beitrag 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.
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: Text aus mehreren dateien auslesen und ersetzen...aber!

Beitrag 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
PureBasic 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​​
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

Re: Text aus mehreren dateien auslesen und ersetzen...aber!

Beitrag 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.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Text aus mehreren dateien auslesen und ersetzen...aber!

Beitrag 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.
Antworten