Раздел: Стандартные функции Паскаля
Функция 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), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |