Неверов Евгений Викторович

Российская общественная инициатива (РОИ)

Вашему вниманию на интернет-ресурсе РОИ размещены следующие общественные инициативы:

  1. Увеличить заработную плату учителям школы.
  2. Запретить работодателям увольнять работников, защищающих свои трудовые права в суде.

Для голосования вы должны быть авторизованы через ЕСИА.

QR-код
Меню сайта
Категории раздела
Программирование на языке Паскаль [26]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [20]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [1]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Мои программы [1]
Описание разработанных автором программ.
Online-программы [2]
Прочее [42]
Свободная тематика
Мини-чат
200
Наш опрос
Как Вы думаете, сколько времени люди проживут на Земле?
Всего ответов: 63
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0

Позиция подстроки в строке

Функция Pos возвращает индекс первого вхождения фрагмента Substr в строке S или ноль, если Substr нигде в S не встречается.

function Pos(Substr: string; S: string): Integer;

где:

  • Substr – фрагмент строки;
  • S – исходная строка.

Например,

  • Pos('во', 'руководство') выведет '5';
  • Pos('ток', 'информатика') выведет '0' (нет такого фрагмента).

Чтобы найти индекс не только первого вхождения фрагмента, потребуется своя функция PosNext, которая осуществляет поиск с позиции Offset.

function PosNext(Substr, S: string; Offset: integer; Reg: boolean): integer;
var i, len: integer;
begin
   Result:=0;
   if Substr='' then
      Exit;
   if Offset<1 then
      Offset:=1;
   if not Reg then
   begin
      Substr:=AnsiLowerCase(Substr);
      S:=AnsiLowerCase(S);
   end;
   len:=Length(Substr);
   for i:=Offset to Length(S)-len+1 do
      if Copy(S, i, len)=Substr then
      begin
         Result:=i;
         Exit;
      end;
end;

где:

  • Substr – фрагмент строки;
  • S – исходная строка;
  • Offset – начальный индекс;
  • Reg – соблюдение регистра.

Например,

  • PosNext('Ба', 'У нас барабан. Барабан большой', 7, false) выведет '7' (фрагменты 'ба', независимо от регистра букв, располагаются на позициях 7, 11, 16 и 20);
  • PosNext('Ба', 'У нас барабан. Барабан большой', 7, true) выведет '16' (найден с большой буквы 'Б');
  • PosNext('Ба', 'У нас барабан. Барабан большой', 8, false) выведет '11' (поскольку мы S задали с 8, функция нашла второй фрагмент);
  • PosNext('й', 'У нас барабан. Барабан большой', 100, false) выведет '0' (поскольку мы S задали намного больше длины самой исходной строки, функция вернула нулевое значение);
  • PosNext('Б', 'У нас барабан. Барабан большой', 18, true) выведет '0' (во фрагменте 'рабан большой' нет больше заглавной буквы 'Б').

Примечание. В современных версиях Delphi имеется встроенная функция PosEx из модуля StrUtils. Она выполняет ту же задачу, что и PosNext, но только с учетом регистра (нет 4-го параметра):

function PosEx(const SubStr, S: string; Offset: Integer): Integer;
Категория: Программирование на языке Паскаль | Добавил: newerow1989 |
Просмотров: 900 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Код *:
Вход на сайт
Поиск
Друзья сайта
Заработок в Интернете
Copyright MyCorp © 2026
Версия для мобильных устройств. Яндекс.Метрика Анализ сайта Проверить мой сайт на ScamAdviser.com