Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Подсчитать количество слов в строке

Delphi , Синтаксис , Текст и Строки

Подсчитать количество слов в строке


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

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. Вот как она работает:

  1. Инициализируйте переменную Work_Count в 0, которая будет хранить количество слов.
  2. Инициализируйте переменную Ix в 1, которая будет использоваться для перебора символов входной строки.
  3. Пока Ix меньше длины входной строки, выполните цикл.
  4. Внутри цикла:
    • Пропустите любые символы-разделители, вызвав функцию Seps, и увеличьте Ix, пока она возвращает True.
    • Если Ix все еще находится внутри границ входной строки, увеличьте количество слов (Work_Count) и сбросьте Ix, чтобы пропустить текущее слово.
  5. После цикла, верните значение Work_Count.

Код также включает комментарий, который предлагает использовать функцию WordCount с компонентом TMemo.

Альтернативное решение с использованием регулярных выражений:

function WordCount(CText: string): Longint;
begin
  Result := Length(Split(Text, [' ']));
end;

function Split(const S: string; const Delimiters: array of char): TStringList;
var
  I, J, K: integer;
begin
  Result := TStringList.Create;
  for I := 1 to Length(S) do begin
    K := I;
    while (K <= Length(S)) and (S[K] in Delimiters) do
      Inc(K);
    Result.Add(Copy(S, I - 1, K - I + 1));
    I := K;
  end;
end;

Код использует TStringList для разделения входной строки на слова по указанным разделителям (в этом случае только пробелы). Функция WordCount затем возвращает количество элементов в полученном списке.

Статья описывает функцию WordCount, которая подсчитывает количество слов в строке, разделяя их на основе специальных символов, таких как пробелы и знаки препинания.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 06:02:28/0.0057590007781982/0