Mit dieser Routine komme ich bei oben angehängtem Text auf 612 Wörter.
Delphi-Quellcode:
function WortCount(s : String): Integer;
var
i : Integer;
bInWort : Boolean;
begin
Result := 0;
bInWort := False;
for i := 1 to Length(s) do begin
case s[i] of
// Wenn Ziffern auch als Zeichen für Wörter gelten sollen,
// oder Zahlen als Wort zu zählen sind:
// '0'..'9',
// Wer weitere Zeichen berücksichtigen will, darf hier gerne erweitern:
'A'..'Z',
'Á','É','Í','Ó','Ú',
'À','È','Ì','Ò','Ù',
'Ä','Ö','Ü',
'a'..'z',
'á','é','í','ó','ú',
'à','è','ì','ò','ù',
'ä','ö','ü','ß' : if not bInWort then begin
Result := Result + 1;
bInWort := True;
end;
else
bInWort := False;
end;
end;
end;
var
sl : TStringList;
begin
sl := TStringList.Create;
sl.LoadFromFile('c:\temp\Von 14 auf 20 Millionen.txt');
ShowMessage(IntToStr(WortCount(sl.Text)));
sl.Free;
end;
Text aufbröseln und "von Hand" nachzählen ergab ebenfalls 612 Wörter.
Frage: ist das ein Wort?
Welt-Krebs-Bericht
Oder sind das drei Wörter?
Wird mit obiger Routine als drei gezählt.
Word zählt auch die Zahlen oder ein Datum ... als einzelne Wörter.
Wenn man's genau haben will, muss man erstmal definieren, was genau ist
Und dann wird es schnell beliebig komplex.