Remove String Problem, Tab entfernen & Teile entfernen

Anfängerfragen zum Programmieren mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Remove String Problem, Tab entfernen & Teile entfernen

Beitrag von Zero_Cool »

Abend

Ich habe wieder mal meine Probleme mit den Strings.

Ich würde gerne eine Datei nach einem Wort durchsuchen ( FindString ), jede Stelle an der das Wort vorkommt, sollte gelöscht werden. ( Remove String ) Sozusagen, suche Wort und lösche es, bis es dieses Wort nicht mehr gibt. Danach sollte das File geschlossen und gespeichert werden.

Diesen Code könnte ich verwenden, jedoch nützt mir der Debug Befehl in einer Konsolenanwendung leider nicht viel. Läuft ja nicht, oder Irre ich mich. Eigentlich müsste nur durchsucht wernde, ersetzt werden und gespeichert werdne.

Code: Alles auswählen

Text$ = "xyz123" 
Text$ = RemoveString(Text$, "xyz123") 
Debug Text$ 
Kann ich automatisch alle Tabulatoren in einem TXT File löschen?

Drittes Problem: Ich würde gerne automatisch Teile einer Zeile löschen, aber erst ab einem gewissen Zeichen. Soll heissen, das Programm sollte alle Zeilen die das Wort "abc" beinhalten suchen, und sollte dan in dieser Zeile, den gesammten Inhalt der nach dem ersten Sonderzeichen "'?" geschireben steht löschen?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Kann ich automatisch alle Tabulatoren in einem TXT File löschen?

Code: Alles auswählen

Text$ = ReplaceString(Text$, #TAB$, "")
oder Tab durch Space ersetzen:

Code: Alles auswählen

Text$ = ReplaceString(Text$, #TAB$, " ")
3. Problem kannste ja langsam alleine lösen! FindString um die Postion des Fragezeichens zu finden, und Right() oder Mid um abzuschneiden
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Dank für die Hilfe. Ja ich weiss, irgendwie stehe ich noch ein wenig auf der Leitung. Hoffe das ändert sich bald. Habe den durchblick noch nicht ganz.

Wäre dieser Code Korrekt, um die Tab zu entfernen?

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 
If File1 
  File2 = CreateFile(#PB_Any, "c:\Dev\_002.tmp") 
  If File2 
    While Eof(File1) = #False 
      UseFile(File1) 

Text$ = ReplaceString(Text$, #TAB$, "")



    Wend 
    CloseFile(File1) 
    CloseFile(File2) 
  EndIf 
EndIf
Das gleiche würde dann ja auch für das löschen von Wörtern gelten:

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 
If File1 
  File2 = CreateFile(#PB_Any, "c:\Dev\_002.tmp") 
  If File2 
    While Eof(File1) = #False 
      UseFile(File1) 
      Text$ = ReadString() 
      If FindString(Text$, "abc1)  = 1
ReplaceString(Text$, "abc","")

      EndIf 
    Wend 
    CloseFile(File1) 
    CloseFile(File2) 
  EndIf 
EndIf
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

RemoveString ist wohl etwas schneller, als ReplaceString mit "", aber sehe Dir doch einfach mal alle Befehle in der StringLib von PB an und probiere es aus, kann man sehr viel mit machen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Jep, danke für die Info. Habe nun einen Code geschrieben. Jedoch scheint er leider noch nicht zu funktionieren.

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_002.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "<a title="
      
      If FindString(Text$, Remove$, 1)  = 1
      RemoveString(Text$, Remove$)
      
      EndIf 
    Wend 
    CloseFile(File1)  


Sinn des Codes ist es alle "abc" zu löschen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

Text$ = RemoveString(Text$, Remove$)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Irgendwie scheine ich ein Brett vor dem Kopf zu haben!! Ist halt bei Anfängern die am Anfang zuviel wollen... :-(

"<a title=" Wird immer noch nicht gelöscht...

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "<a title="
      
      If FindString(Text$, Remove$, 1)  = 1
      Text$ = RemoveString(Text$, Remove$)
      
      EndIf 
    Wend 
    CloseFile(File1) 
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Wenn du Findstring() = 1 abfragst löscht er es nur wenn das Wort ganz am Anfang steht.
PB-Hilfe hat geschrieben: Position = FindString(String$, SuchString$, StartPosition)
Beschreibung

Versucht den 'Suchstring$' im angegebenen 'String$' - beginnend an der angegebenen Position ('StartPosition') - zu finden. Wurde der String gefunden, wird dessen Position (in Anzahl der Zeichen, beginnend bei 1) zurückgegeben. Wurde der String nicht gefunden, gibt die Funktion 0 zurück.
Also ließ die Hilfe genauer. Denn die Rückgabewerte sind schon oft verwirrend, da hab ich auch schon oft Fehler gemacht.

PB-Hilfe hat geschrieben: String$ = RemoveString(String$, LöschString$ [, Modus])
Beschreibung

Ermittelt alle Vorkommen des 'LöschString$' im angegebenen 'String$' und entfernt diese.
Das heißt, RemoveString() tut genau das was du brauchst, und wenn der gesuchte String nicht drin ist gibt es halt den Orginalstring zurück.
Deswegen kannst du dir das If Findstring() sparen. :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Einmal versuche ich es noch, sonst gebe ich es auf... :-(


Folgender Code funktioniert leider immer noch nicht. Ich lasse das Programm laufen, jedoch befinden sich immer noch alle abc im Text.

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      
Text$ = ReplaceString(Text$, "abc", "")

    Wend 
    CloseFile(File1) 

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "abc"

      Text$ = RemoveString(Text$, Remove$)
      
    Wend 
    CloseFile(File1) 
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Wenn du Zeichen in der Datei _001.tmp loeschen moechtest
musst du sie auch wieder hineinschreiben.

Code: Alles auswählen

File1 = ReadFile  (#PB_Any,"c:\Dev\_001.tmp")
File2 = CreateFile(#PB_Any,"c:\Dev\_002.tmp") ; 

While Eof(File1) = #False
  UseFile(File1)
  Text$  = ReadString() 
  Text2$ + ReplaceString(Text$, "abc", "")
  UseFile(File2)
  WriteStringN(Text2$) 
Wend

CloseFile(File1) 
CloseFile(File2) 
Antworten