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

Подсчитать количество вхождений подстроки в строке

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



Автор: RhinoFC
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Понадобилось подсчитать количество вхождений подстроки в строку,
вот и появилась эта функция. Возможно в ней и нет изюминки,
но может кому и пригодится.

Зависимости: System
Автор:       Дмитрий, bestonix@mail.ru, ICQ:155133146, Тольятти
Copyright:   Дмитрий
Дата:        17 октября 2002 г.
***************************************************** }

function CntRecurrences(substr, str: string): integer;
var
  cnt, p: integer;
begin
  cnt := 0;
  while str <> '' do
  begin
    p := Pos(substr, str);
    if p > 0 then
      inc(cnt)
    else
      p := 1;
    Delete(str, 1, (p + Length(substr) - 1));
  end;
  Result := cnt;
end;

Вот перевод текста на русский язык:

Функция Delphi, именуемая CntRecurrences, рассчитывает количество вхождений заданного подстроки в строке. Вот разбивка кода:

Подпись функции

function CntRecurrences(substr, str: string): integer;

Функция принимает два параметра:

  • substr: подстрока для поиска (тип string)
  • str: исходная строка для поиска в (тип string)

Функция возвращает целочисленное значение, представляющее количество вхождений подстроки.

Переменные и инициализация

var
  cnt, p: integer;

Две локальные переменные объявлены:

  • cnt: целочисленная переменная, инициализированная в 0, которая будет хранить счетчик вхождений.
  • p: еще одна целочисленная переменная, инициализированная в 0, которая будет использоваться как временное значение.

Основной логик

while str <> '' do
begin
  p := Pos(substr, str);
  if p > 0 then
    inc(cnt)
  else
    p := 1;
  Delete(str, 1, (p + Length(substr) - 1));
end;

Основной логик заключается в цикле while, который продолжается до тех пор, пока исходная строка (str) не станет пустой. Внутри цикла:

  • p присваивается результат вызова функции Pos, которая возвращает позицию первого вхождения подстроки substr в текущее значение строки str. Если не найдено совпадения, Pos возвращает 0.
  • Если найдено совпадение (p > 0), счетчик переменной cnt увеличивается на 1 с помощью функции inc.
  • Если не было найдено совпадения, или если предыдущее совпадение находилось в начале строки, p присваивается значение 1, чтобы обеспечить корректное обнаружение подстроки в следующей итерации.
  • Подстрока, соответствующая позиции p, удаляется из исходной строки с помощью функции Delete. Длина подстроки (Length(substr)) вычитается из p для получения правильного начала удаления.

Выражение возвращаемого значения

Result := cnt;

После завершения цикла, финальное значение переменной cnt присваивается переменной Result и возвращается функцией.

Рассмотрена функция для подсчета количества вхождений подстроки в строке с использованием языка Delphi.


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

Получайте свежие новости и обновления по 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 05:37:20/0.0056920051574707/0