Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

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

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

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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Нахождение последнего вхождения подстроки в строку

Функция возвращает начало последнего вхождения
подстроки FindS в строку SrcS, т.е. первое с конца.
Если возвращает ноль, то подстрока не найдена.
Можно использовать в текстовых редакторах
при поиске текста вверх от курсора ввода.

Зависимости: System
Автор:       Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright:   Автор: Федоровских Николай
Дата:        16 июня 2002 г.
***************************************************** }

function PosR2L(const FindS, SrcS: string): Integer;
{Функция возвращает начало последнего вхождения
 подстроки FindS в строку SrcS, т.е. первое с конца.
 Если возвращает ноль, то подстрока не найдена.
 Можно использовать в текстовых редакторах
 при поиске текста вверх от курсора ввода.}

  function InvertS(const S: string): string;
    {Инверсия строки S}
  var
    i, Len: Integer;
  begin
    Len := Length(S);
    SetLength(Result, Len);
    for i := 1 to Len do
      Result[i] := S[Len - i + 1];
  end;

var
  ps: Integer;
begin
  {Например: нужно найти последнее вхождение
   строки 'ро' в строке 'пирожок в коробке'.
   Инвертируем обе строки и получаем
     'ор' и 'екборок в кожорип',
   а затем ищем первое вхождение с помощью стандартной
   функции Pos(Substr, S: string): string;
   Если подстрока Substr есть в строке S, то
   эта функция возвращает позицию первого вхождения,
   а иначе возвращает ноль.}
  ps := Pos(InvertS(FindS), InvertS(SrcS));
  {Если подстрока найдена определяем её истинное положение
   в строке, иначе возвращаем ноль}
  if ps <> 0 then
    Result := Length(SrcS) - Length(FindS) - ps + 2
  else
    Result := 0;
end;

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

p := PosR2L('са', 'Мой сапог догнал самолёт.'); // p:=18;

Программная функция Delphi, именуемая PosR2L, находит последнее вхождение подстроки в строке и возвращает ее позицию. Вот разбивка кода:

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

function PosR2L(const FindS, SrcS: string): Integer;

Функция принимает два параметра типа string: FindS - подстрока для поиска, и SrcS - исходная строка для поиска. Она возвращает целочисленное значение, представляющее позицию последнего вхождения FindS в SrcS.

Функция InvertS

function InvertS(const S: string): string;

Помощник функция InvertS принимает строку как входной параметр и возвращает ее инвертированную версию, то есть символы в обратном порядке. Она использует цикл для заполнения массива символами из оригинальной строки в обратном порядке.

Основная функция

var
  ps: Integer;
begin
   // Инвертируем обе строки
  ps := Pos(InvertS(FindS), InvertS(SrcS));

   // Если подстрока найдена, рассчитываем ее фактическую позицию
  if ps <> 0 then
    Result := Length(SrcS) - Length(FindS) - ps + 2
  else
    Result := 0;
end;

Основная функция сначала инвертирует обе строки FindS и SrcS с помощью функции InvertS. Затем она использует стандартную функцию Pos для поиска позиции инвертированной подстроки в инвертированной исходной строке.

Если подстрока найдена, функция рассчитывает ее фактическую позицию, вычитывая длину подстроки из длины исходной строки и добавляя смещение, рассчитанное ранее (ps). Если подстрока не найдена, функция возвращает 0.

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

p := PosR2L('са', 'Мой сапог догнал самолёт.');

В этом примере функция PosR2L находит последнее вхождение подстроки 'са' в строке 'Мой сапог догнал самолёт.'. Результат хранится в переменной p, которая присваивается значению 18.

Наявляется функция FindS в строке SrcS, которая возвращает начало последнего вхождения подстроки FindS в строку SrcS.


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


:: 2016-03-15 07:46:13 :: re:Нахождение последнего вхождения подстроки в строку

пользователь: Saidahmad Amridinzoda.

Функция LastPos(s,s1)
Назначение: поиск последнего вхождения подстроки s1 в строку s


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-06-02 10:20:12
2024-06-16 03:32:52/0.007565975189209/2