Раздел: Стандартные функции Паскаля
Функция Pos
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Функция Pos в Паскале ищет подстроку в строке. Синтаксис функции имеет довольно много вариантов для разных типов данных:
function Pos(const substr : shortstring; const s : shortstring) : SizeInt; function Pos(C : Char; const s : shortstring) : SizeInt; function Pos(const Substr : ShortString; const Source : AnsiString) : SizeInt; function pos(const substr : shortstring; c : Char) : SizeInt; function Pos(const Substr : AnsiString; const Source : AnsiString) : SizeInt; function Pos(c : Char; const s : AnsiString) : SizeInt; function Pos(const Substr : UnicodeString; const Source: UnicodeString) : SizeInt; function Pos(c : Char; const s : UnicodeString) : SizeInt; function Pos(c : UnicodeChar; const s : UnicodeString) : SizeInt; function Pos(c : AnsiString; const s : UnicodeString) : SizeInt; function Pos(c : UnicodeString; const s: AnsiString) : SizeInt; function Pos(c : ShortString; const s : UnicodeString) : SizeInt; function Pos(const Substr : WideString; const Source : WideString) : SizeInt; function Pos(c : Char; const s : WideString) : SizeInt; function Pos(c : WideChar; const s : WideString) : SizeInt; function Pos(c : WideChar; const s : AnsiString) : SizeInt; function Pos(c : AnsiString; const s : WideString) : SizeInt; function Pos(c : WideString; const s : AnsiString) : SizeInt; function Pos(c : ShortString; const s : WideString) : SizeInt; function Pos(c : Char; const v : Variant) : SizeInt; function Pos(s : ShortString; const v : Variant) : SizeInt; function Pos(a : AnsiString; const v : Variant) : SizeInt; function Pos(w : WideString; const v : Variant) : SizeInt; function Pos(w : UnicodeString; const v : Variant) : SizeInt; function Pos(v : Variant; const c: Char) : SizeInt; function Pos(v : Variant; const s : ShortString) : SizeInt; function Pos(v : Variant; const a : AnsiString) : SizeInt; function Pos(v : Variant; const w : WideString) : SizeInt; function Pos(v : Variant; const w : UnicodeString) : SizeInt; function Pos(v1 : Variant; const v2 : Variant) : SizeInt;
Вся эта куча вариантов взята из документации. Так что просьба не критиковать за излишние подробности )))
Функция Pos возвращает индекс подстроки Substr в строке S, если строка S содержит в себе подстроку Substr. Если подстрока Substr не найдена в строке, то функция возвращает 0. Поиск чувствителен к регистру.
Как найти подстроку в строке
Разумеется, сделать это можно без использования специальных функций.
Проще всего найти в строке символ - это можно сделать простым перебором символов в строке.
Найти вхождение подстроки из нескольких символов будет сложнее. Но тоже возможно - существуют специальные алгоритмы.
Однако зачем “изобретать велосипед”, если есть готовые функции. Такие, например, как функция Pos.
С помощью этой функции можно найти символ или подстроку в строке.
Как часто приходится это делать? Зависит от специфики вашей работы.
Если вы работаете, например, с математикой, то почти никогда.
Если же вы работаете с большими объёмами текстовой информации, с файлами, то довольно часто.
Итак, пример:
S := 'abcdefgcde'; Writeln(Pos('f', S)); //Pos = 6 Writeln(Pos('F', S)); //Pos = 0 - буква F не найдена Writeln(Pos('cde', S)); //Pos = 3, потому что функция //возвращает индекс первого //найденного вхождения Writeln(Pos('cdf', S)); //Pos = 0 - такой подстроки нет
В принципе, здесь всё понятно. Особых разъяснений не требуется.
Единственное замечание по варианту поиска подстроки cde. Как видите, в исходной строке есть две подстроки cde. Но функция возвращает число 3, то есть индекс первого элемента первой найденной подстроки.
Пример программы:
program posfunc; var S : string; begin //Ищем индекс первого пробела в строке S := 'The first space in this sentence is at position : '; Writeln(S, Pos(' ', S)); //Pos = 4 //Ищем последнюю букву английского алфавита в строке S := 'The last letter of the alphabet doesn''t appear in this sentence '; //Так как такой буквы в строке нет, то будет выведено сообщение об этом if (Pos('Z', S) = 0) and (Pos('z', S) = 0) then Writeln(S); //Проверяем, что функция Pos действительно чувствительна к регистру S := 'abcdefgcde'; Writeln(Pos('f', S)); //Pos = 6 Writeln(Pos('F', S)); //Pos = 0 - буква F не найдена Writeln(Pos('cde', S)); //Pos = 3, потому что функция //возвращает индекс первого //найденного вхождения Writeln(Pos('cdf', S)); //Pos = 0 - такой подстроки нет ReadLn; end.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |