Home » Tipps & Tricks » Object Pascal » Strings » Wörter in einem String zählen

Wörter in einem String zählen

Viele Textverarbeitungen bieten diese Funktion an: Wörter zählen…Mit dieser Funktion kannst Du auch so etwas realisieren. In der lokalen Funktion Seps kannst Du selbst festlegen, welche Zeichen als Indikator für ein neues Wort verwendet werden sollen.

Function WordCount(CText: String): Longint;
  Function Seps(As_Arg: Char): Boolean;
  Begin
    Seps := As_Arg In
    [#0..#$1F, ' ', '.', ',', '?', ':', ';', '(',')', '/', ''];
  End;

Var
  Ix: Word;
  Work_Count: Longint;
Begin
  Work_Count := 0;
  Ix := 1;
  While Ix <= Length(CText) Do
    Begin
      While (Ix <= Length(CText)) And (Seps(CText[Ix])) Do
        Inc(Ix);
      If Ix <= Length(CText) Then
        Begin
          Inc(Work_Count);
          While (Ix <= Length(CText)) And 
                (Not Seps(CText[Ix])) Do
            Inc(Ix);
        End;
    End;
  Result := Work_Count;
End;

Die Funktion könnte man Beispielsweise so aufrufen:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:=IntToStr(WordCount(Memo1.Text));
end;

In diesem Falle würde in der Titelleiste des Formulars die Anzahl der Wörter des Textfeldes Memo1 stehen.