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

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

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

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

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function CountPos(const subtext: string; Text: string): Integer;
 begin
   if (Length(subtext) = 0) or (Length(Text) = 0) or (Pos(subtext, Text) = 0) then
     Result := 0
   else
     Result := (Length(Text) - Length(StringReplace(Text, subtext, '', [rfReplaceAll]))) div
       Length(subtext);
 end;

Here is a translation of the content into Russian:

Функция Delphi, называемая CountPos, принимает два параметра типа строка: subtext и Text. Она возвращает количество вхождений subtext в Text.

Рассмотрим, как функция работает:

  1. Функция сначала проверяет, является ли ни один из параметров subtext, Text или оба пустыми строками (Length(subtext) = 0 или Length(Text) = 0). Если это так, она возвращает 0.
  2. Затем функция использует функцию Pos для поиска позиции первого вхождения subtext в Text. Если не было найдено ни одного вхождения (Pos(subtext, Text) = 0), она возвращает 0.
  3. В противном случае функция рассчитывает количество вхождений, вычитая длину модифицированной строки (полученной путем замены всех вхождений subtext на пустую строку с помощью StringReplace) из длины Text, а затем делив результат на длину subtext.

Пример использования:

var
  Text: string;
  subtext: string;

begin
  Text := 'Hello, Hello, World!';
  subtext := 'Hello';
  Result := CountPos(subtext, Text); // Возвращает 2
end.

В этом примере функция возвращает 2, потому что subtext 'Hello' встречается дважды в Text 'Hello, Hello, World!'.

Альтернативное решение может быть использование регулярного выражения для поиска всех вхождений подстроки и затем счета их. Это подход может быть более эффективным для больших строк или сложных шаблонов. Вот пример использования built-in поддержки регулярных выражений Delphi:

function CountPos(const subtext: string; Text: string): Integer;
var
  Matches: TMatchArray;

begin
  if Length(subtext) = 0 or Length(Text) = 0 then
    Result := 0
  else begin
    Result := 0;
    Matches := FindAllMatches(Text, PWideChar(subtext));
    for i := 0 to Pred(Matches.Count) do
      Inc(Result);
  end;
end;

Функция использует функцию FindAllMatches из библиотеки регулярных выражений Delphi для поиска всех вхождений подстроки в тексте. Затем она счет количество вхождений и возвращает результат.

В статье рассмотрен алгоритм нахождения количества вхождений подстроки в строку с помощью функции CountPos, реализованной на языке Delphi.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:29:33/0.0054750442504883/1