По своей сути строки в паскале представляют собой одномерные массивы символов.
Для объявления переменной вида «строка» используется тип string , для символов – char .
Максимальная длина строки составляет 255 символов. Если вам необходимы для работы более короткие строки, то их длину в квадратных скобках указывают при описании переменной типа string . Если длина не указана, то по умолчанию ее длина будет максимально возможной, т.е. 255 символов.
Var s : string; s1 : string [10]; c : char;
Объявлены переменные типа «строка»: s – длиной 255 символов и s1 длиной 10 символов.
Переменная c – типа «символ».
Для присвоения значения типа строка переменной используются апострофы.
S :=’Привет, мир!’;
Для присвоения «нулевого» значения переменной типа «строка» используются два апострофа подряд, что означает, что в строке нет символов.
S :=’’;
У каждого символа в строке, как у элемента одномерного массива, есть индекс. Со строкой и ее символами можно работать, как с одномерным массивом.
S[ 10]:=’ э’;
Write ( s );
Выведет на экран: Привет, мэр!
Для соединения нескольких строк в одну используется “+ ” либо Concat (s1, s2,...,sn)
Например, последовательность команд
s1:=' Привет';
s2:=', ';
s3:=' мир ! ';
write (s1+s2+s3);
write (concat(s1,s2,s3));
Выведет на экран: Привет, мир ! Привет, мир !
Чтобы выделить подстроку из строки используется функция Copy (S, poz, n) , где S – строка, из которой, начиная с позиции poz , копируем подстроку, состоящую из n символов.
s1:='Привет, мир!';
write (copy(s1,9,3)); // выделить подстроку, начиная с 9 позиции, длиной 3 символа
Выведет на экран: мир
Для поиска в строке подстроки используется функция Pos (subS, S) , которая определяет с какой позиции подстрока subS входит в строку S (возвращает целое число, равное индексу в строке первого символа искомой подстроки). Если искомой подстроки не обнаружено, то функция вернет 0.
Например:
s :='Привет, мир!';
write ( pos ('мир',s )); // найти с какой позиции в строке находятся символы 'мир'
Выведет на экран: 9
s:='Привет, мир!';
write (pos(' мэр',s));
Выведет на экран: 0
Для определения длины строки (количества символов в строке) используется функция Length(s).
Например:
s:='Привет,мир!';
write (Length(s));
Выведет на экран: 12
s:='';
write (Length(s));
Выведет на экран: 0
Для удаления из строки символов используется процедура Delete (s ,poz ,n ), которая из строки s , начиная с позиции poz , удаляет n символов. При этом длина строки уменьшается на n .
Например:
s:=' Привет, мир !';
writeln (length(s));
Delete (s,5,2); // удалить из строки 2 символа, начиная с 5
writeln (s,' ',length(s));
Выведет на экран:
11
Прив, мир! 9
Для добавления в строку символов/подстроки используется процедура Insert (s ubs ,s ,poz ).
Подстроку subs вставить в строку s с позиции poz . Соответственно длина строки увеличивается на n.
Например:
s:=' Привет, мир !';
writeln (length(s));
Insert ('мой ',s,9);
writeln (s,' ',length(s));
Выведет на экран:
12
Привет, мой мир! 16
Строки можно сравнивать между собой, используя математические символы: =,<>,>,<,<=,>=. Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки ASCII. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают.
В результате сравнений получаем логическое значение false или true.
Например, возьмем две строки одинаковой длины, но разного содержания и их сравним:
s:=' удар';
s1:=' удав';
writeln (s=s1);
writeln (s<s1);
Получим результат :
False // не совпадает последняя буква
False // буква «р» имеет числовое значение кода большее, чем буква «в»
Теперь возьмем строки разной длины:
s:=' ударник';
s1:=' удар';
writeln (s=s1);
writeln (s>s1);
Получим:
False // несмотря на совпадение первых 4 букв, длина строки больше
True
Для образца посмотрите небольшую программу, по обработке строки разными способами:
И результаты работы этой программы.