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

Материал из DRKB

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

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) 
}


Source: Взято с http://delphiworld.narod.ru
ID: 00145



{ **** UBPFD *********** by delphibase.endimus.com ****
>> Подсчет количества слов в строке.

Возвращает количество слов в строке, границы слов определяются в
соответствие с набором разделителей.

Описание параметров:
s - строка, в которой происходит подсчет слов;

Delimiters множество, содержащее символы-разделители слов;

Возвращаемое значение - количество слов

Зависимости: SysUtils, UBPFD.WordScan

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', [' ']);


Author: Алексей Вуколов
Source: http://delphibase.endimus.com
ID: 00867