Wörter finden

Man erkennt die Wörter in einem Text an den Trennzeichen. Liest man die Zeichen in einem String bis zum nächsten Trennzeichen aus, so erhält man einen Teilstring, der ein Wort darstellt. Mit Hilfe des Datentyps 'Menge'  kann man sich  endlose if-Abfragen sparen:

const  umlaute : set of char = ['ä','ö','ü','ß','Ä','Ö','Ü'];
       trennzeichen : set of char = ['.',',','.',';',' ','-'];
       alphabet : set of char =['A'..'Z'];

Mengen unterscheiden sich von Feldern dadurch, daß ein Element nur einmal in einer Menge vorkommen kann. Außerdem können Mengen nur für ordinale (d.h. abzählbare) Typen deklariert werden. Die Abfrage, ob der Wert einer Variablen z.B. ein Umlaut ist,  erfolgt einfach durch:

if ch in umlaute then....
if not ( ch in trennzeichen) then ....

Die folgende Prozedur zerlegt eine Zeile in ihre Bestandteile (Wörter) und trägt diese in eine ListBox ein:

procedure TForm1.ZerlegeInWorte(zeile : string);
var wort : string;
begin
 
ListBox2.Clear;
  while length(zeile) > 0 do begin
    wort := '';
    repeat
      wort := wort+zeile[1];
      delete(zeile,1,1);
    until (length(zeile) = 0) or (zeile[1] in trennzeichen) ;  
    ListBox2.Items.Add(wort);
    while (length(zeile)>0) and (zeile[1] in trennzeichen) do delete(zeile,1,1);
  end;
end;

 

Lade das Rumpfprogramm text3.pas und erweitere es für folgende Aufgabenstellungen

Aufgaben:

  1. Erweitere das Programm so, daß ein fortlaufender Text in seine Einzelbestandteile (Wörter) zerlegt wird .
  2. Zähle, wie oft ein vorgegebenes Wort in einem Text vorkommt.
  3. Eine Frauen-Gleichberechtigungs-Gruppe filtert Internetseiten und ersetzt alle Wörter wie 'man' durch 'frau' und 'Mann' durch 'Frau' (oder so). Erweitere Dein Programm um solch einen Filter.

 

Zurück zu Delphi