Найти тему
Pascal для "чайников"

Работа со строками в Pascal

По своей сути строки в паскале представляют собой одномерные массивы символов.

Для объявления переменной вида «строка» используется тип 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

Для образца посмотрите небольшую программу, по обработке строки разными способами:

-2

И результаты работы этой программы.

-3

Наука
7 млн интересуются