Как разбить текст на слова в Delphi

Другое   3 февраля 2012  Автор статьи: admin 

Приведенная в этой статье процедура помогает эффективно разбить текст на отдельные слова.
На вход данной процедуре необходимо подать стоку, содержащую текст, объект типа TStringList, в которую процедура передаст все найденные слова, а также целочисленное значение, указывающее на минимальный размер добавляемых в список слов. Последний параметр является необязательным и по умолчанию равен 3. В ходе работы этой процедуры каждое отдельное слово будет занесено в отдельную строку. Процедура умеет отделять знаки препинания, а также добавлять только слова длиннее определенного значения.

[cc lang=»delphi»]procedure SplitTextIntoWords(const str: string;
output: Tstringlist; minLength: integer=3{минимальная длина слова});
var
positionStart, positionEnd: integer;
wordToAdd: string;
begin
Assert(Assigned(output));
output.Clear;
positionStart := 1;
while positionStart <= Length(str) do begin while (positionStart <= Length(str)) and not IsCharAlpha(str[positionStart]) do Inc(positionStart); if positionStart <= Length(str) then begin positionEnd := positionStart + 1; while (positionEnd <= Length(str)) and IsCharAlpha(str[positionEnd]) do Inc(positionEnd); wordToAdd := Copy(str, positionStart, positionEnd - positionStart); if (Length(wordToAdd) >= minLength) then
begin
// добавление слова в список
output.Add(AnsiLowerCase(wordToAdd));
end;
positionStart := positionEnd + 1;
end;
end;
end;[/cc]

Пример использования процедуры:
[cc lang=»delphi»]procedure TForm1.Button1Click(Sender: TObject);
var words: TStringList;
begin
words:= TStringList.Create;
SplitTextIntoWords(Memo1.Text,words);
Memo2.Text:=words.Text;
words.Free;
end;[/cc]

Результат работы программы:

  • Артемий

    Большое спасибо!Вы очень помогли)

Научиться программировать

  • на Delphi

  • на Java

  • на C++