Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как подсчитать количество слов в строке?

01.01.2007
function Seps(As_Arg: Char): Boolean; 
begin 
  Seps := As_Arg in 
    [#0..#$1F, ' ', '.', ',', '?', ':', ';', '(', ')', '/', '\']; 
end; 
 
function WordCount(CText: string): Longint; 
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; 
  Word_Count := Work_Count; 
end; 
 
{ 
  To count the number opf words in a TMemo Component, 
  call: WordCount(Memo1.Text) 
}

Взято с https://delphiworld.narod.ru


{ **** UBPFD *********** by delphibase.endimus.com ****
>> Подсчет количества слов в строке.
 
Возвращает количество слов в строке, границы слов определяются в
соответствие с набором разделителей.
 
Описание параметров:
s - строка, в которой происходит подсчет слов;
 
Delimiters множество, содержащее символы-разделители слов;
 
Возвращаемое значение - количество слов
 
Зависимости: SysUtils, UBPFD.WordScan
Автор:       vuk, vuk@fcenter.ru
Copyright:   Алексей Вуколов
Дата:        18 апреля 2002 г.
***************************************************** }
 
function CountWords(const s: string; Delimiters: TSysCharSet): integer;
var
  wStart, wLen: integer;
begin
  Result := 0;
  wStart := 1;
  while WordScan(s, wStart, wLen, Delimiters) do
  begin
    inc(Result);
    inc(wStart, wLen);
  end;
end;
//Пример использования: 
 
WordCount := CountWords('This is a sample', [' ']);