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) dobeginwhile (Ix <= Length(CText)) and (Seps(CText[Ix])) do
Inc(Ix);
if Ix <= Length(CText) thenbegin
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)
}
Here's the translation of the content into Russian:
Данный код на языке Delphi Pascal calculates the number of words in a given string.
Разбивка функциональности кода:
Первая функция Seps проверяет, является ли символ разделителем (пробел, знак препинания или специальный символ). Она возвращает True, если символ является разделителем, и False в противном случае.
Вторая функция WordCount принимает строку как входной параметр и calculates the number of words in it. Вот как она работает:
Инициализируйте переменную Work_Count в 0, которая будет хранить количество слов.
Инициализируйте переменную Ix в 1, которая будет использоваться для перебора символов входной строки.
Пока Ix меньше длины входной строки, выполните цикл.
Внутри цикла:
Пропустите любые символы-разделители, вызвав функцию Seps, и увеличьте Ix, пока она возвращает True.
Если Ix все еще находится внутри границ входной строки, увеличьте количество слов (Work_Count) и сбросьте Ix, чтобы пропустить текущее слово.
После цикла, верните значение Work_Count.
Код также включает комментарий, который предлагает использовать функцию WordCount с компонентом TMemo.
Альтернативное решение с использованием регулярных выражений:
Код использует TStringList для разделения входной строки на слова по указанным разделителям (в этом случае только пробелы). Функция WordCount затем возвращает количество элементов в полученном списке.
Статья описывает функцию WordCount, которая подсчитывает количество слов в строке, разделяя их на основе специальных символов, таких как пробелы и знаки препинания.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.