AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Strings filtern

Ein Thema von aaron · begonnen am 18. Feb 2003 · letzter Beitrag vom 18. Feb 2003
Antwort Antwort
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#1

Strings filtern

  Alt 18. Feb 2003, 10:56
Hallo,
habe nur die Table Data Inhalte einer Html-Seite in einem Memo geladen.

Die gekürzte Version von dem was gefiltert werden soll, sieht so aus:
<B class=grey>Wartburg golf 4[/B]
, EZ: 01/03,

EUR 3.000

Ich möchte folgendes herausfiltern und in einer Listbox oder Memo ausgeben:
Wartburg golf 4
EZ: 01/03
EUR 3.000

Diese Informationen sind nicht nur einmal im Memo, sondernn ganz unterschiedlich, manchmal 50x, 3x...

Supergut wäre es auch wenn diese Daten in einer Zeile stehen könnten
Wartburg golf 4 - EZ: 01/03 - EUR 3.000

Wer mag mir dabei helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 18. Feb 2003, 11:08
Stichwörter für die Hilfe:
pos, copy, delete, StringReplace.

Im Anhang noch mal zwei Projekte. Eins extrahiert Links aus einem Text und das andere E-Mail-Adressen. Beide funkltionieren nach unterschiedlichen Prinzipien.

Noch ein Tipp: Ersetz alle HTML-Tags mit StringReplace durch ein Trennzeichen zum Beispiel ";", dann fällt das Parsen einfacher. da habe ich auch noch was fällt mir ein. Das wäre meine bevorzugte Methode.
Angehängte Dateien
Dateityp: zip linkparser.zip (170,5 KB, 8x aufgerufen)
Dateityp: zip kopie_von_ikarus01.zip (199,8 KB, 7x aufgerufen)
Dateityp: zip string_parsen.zip (212,4 KB, 11x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#3
  Alt 18. Feb 2003, 11:15
DANKE, schau ich mir gleich an
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#4
  Alt 18. Feb 2003, 11:58
Supergut! Danke...
eins von den dreien hätte ich nun
<B class=grey>Wartburg golf 4[/B]
, EZ: 01/03,

EUR 3.000

also ich bekomme das jetzt herausgefiltert:
Wartburg golf 4


muss ich das für alle 3 "Suchbegriffe" wiederholen, oder geht das auch in einem? Mag mir das noch jemand zeigen?
Da ich die Ergebnisse schon sehr gerne in einer Listbox hätte.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
   s, s1, s2: String;
begin
  i := 0;
  Listbox1.Clear;
  s2 := Memo1.Text;
  { so lange 'class=grey>' gefunden wird ist pos() > 0 }
  while pos('class=grey>', s2) > 0 do
  begin
    { kopieren der Zeichenfolge ab 'class=grey>' bis zum ersten Vorkommen von '"'
     -> Linkende }

    while s1 <> '<do
    begin
      Inc(i);
      { immer 1 Zeichen nach s1 kopieren }
      s1 := copy(s2, pos('class=grey>', s2)-1+i, 1);
      { Überprüfen, ob s1 = ", wenn true Schleife verlassen }
      if s1 = '<then break;
      { Zusammensetzten des Links }
      s := s + s1;
    end;
    { Hinzufügen des Links der in s steht in die Listbox }
    memo2.lines.Add(s);
    { Da pos() inmer nur das erste Vorkommen eines Teilstrings in einem String
    findet, wird der Text bis nach dem ersten Vorkommen abgeschnitten }

    s2 := copy(s2, pos('class=grey>', s2)+Length(s), Length(Memo1.Text));
      Memo2.text := StringReplace(Memo2.text, 'class=grey>', ' ',
                          [rfReplaceAll, rfIgnoreCase]);
    { Zurücksetzen der Variablen }
    s := '';
    s1 := '';
    i := 0;
  end;
  
end;
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#5
  Alt 18. Feb 2003, 17:07
ist echt dringend, ich kriege es einfach nicht hin...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 18. Feb 2003, 23:13
Na sicher mußt du das jetzt für alle drei machen. Nur könnte das für die anderen zwei etwas schwer werden, da und ja häufiger vorkommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#7
  Alt 18. Feb 2003, 23:16
verstehe ich, wäre aber cool gewesen wenn ich das hätte in eine funktion einbauen können, es funktioniert ja schon...ist nur tierisch langsam

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 18. Feb 2003, 23:20
Wie groß sind denn die Dateien?

Schnelle rist auf alle Fälle der String-Parser, denn da wird einfach nur der Pointer in der Zeichenkette weitergeschoben. Allerdings geht das nur mit einem Zeichen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#9
  Alt 18. Feb 2003, 23:22
188KB
ca 2500 Zeilen
ist ne Html-datei

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz