Строки. Объявление строчных типов и переменных
Вам уже неоднократно приходилось в различных ситуациях пользоваться строками для вывода информации с помощью операторов Write и WriteIn. Например:
Writeln('Текст заключённый в кавычки – это и есть строка. ');
Символ номер 32 "кавычка" используется при работе со строковыми величинами так же, как и с символьными переменными. Если Вам необходимо вывести символ номер 32 на экран, перед ним необходимо поставить дополнительную кавычку. Например:
Writeln('Строка с кавычкой " внутри. ');
При выполнении этого оператора на экране монитора вы получите:
Строка с кавычкой " внутри.
Для объявления строковых типов и переменных используется служебное слово STRING.
VAR si: string;
В данном случае объявлена строковая переменная si длиной 255 символов.
Вслед за словом string в квадратных скобках может указываться максимальная длина строки. Например:
VAR S: string[70];
или
TYPE
Line: string[70];
VAR S: Line;
В приведённых примерах переменная S в качестве своего значения может иметь любую последовательность символов (каждый из которых имеет тип char) произвольной длины (от 0 до 70 символов).
Определения значения строковой переменной
Значение строковой переменной может быть присвоено оператором присваивания, либо введено оператором ввода:
S := 'Пример строки. '; Readln(S) ;
В случае присваивания строковой переменной строкового выражения с длиной большей, чем максимально допустимая для данной переменной, происходит "обрубание" строки до максимальной длины. Эта ситуация не считается ошибочной, поэтому прерывания выполнения в данном случае не происходит, например:
PROGRAM EX_11_4;
VAR
ShortStr: string[5] ;
BEGIN
ShortStr := 'Очень длинная строка';
Writeln (ShortStr); {Очень}
END.
Длина строки. Операция конкатенации
В Pascal максимальная длина строки не может превышать 255 символов. Если размер строки не указан, он считается равным 255. Ниже объявлены две строки одинаковой длины.
VAR
att: string;
ts2: string[255] ;
Важнейшее отличие строк от обычных символьных массивов заключается в том, что строки могут динамически изменять свою длину. Например, если после присваивания
att := 'Короткая строка1; длина строки составит 15 символов', то следующее присваивание
att := att + ' стала длиннее'; увеличит её длину до 29 символов.
Для строковых величин определена операция конкатенации '+':
PROGRAM EX_22_;
VAR si: string[80];
BEGIN
si := 'Пример ' + 'строки.1;
Writeln(sl); {Пример строки.} END.
Функции для работы со строками
Имя и параметры | Типы параметров | Тип результата | Действие |
Concat (S1, [S2, ..., Sn]) | S1, S2… Sn – string | string | объединяет несколько строк в одну (при необходимости усекает чрезмерно большую строку до 255 символов). S1, S2, ..., Sn – объединяемые строки. |
Length (S) | S – string | byte | возвращает текущий размер строки. S – строка, у которой определяется размер |
Pos (P,S): | P,S – string | byte | поиск последовательности p в строке S (результат равен номеру первого символа строки S, с которого начинается искомая последовательность, или 0, если такой последовательности в строке нет). |
Copy (S,I,С) | S – string, I, C – byte | string | создаёт подстроку строки S. S – исходная строка; I – номер первого, выделяемого символа строки, С – число выделяемых символов |
IntToStr(I) | I – integer | string | преобразует целое число к строке |
StrToInt(S) | S – string | integer | преобразует строку в целое число . Если преобразование невозможно, то возникает ошибка времени выполнения |
FloatToStr(R) | R – real | string | преобразует вещественное число к строке |
StrToFloat(S) | S – string | real | преобразует строку в вещественное число. Если преобразование невозможно, то возникает ошибка времени выполнения |
UpperCase(S) | S – string | string | возвращает строку S, преобразованную к верхнему регистру |
LowerCase(S) | S – string | string | возвращает строку S, преобразованную к нижнему регистру |
Trim(S) | S – string | string | возвращает копию строки S с удаленными лидирующими и заключительными пробелами |
TrimLeft(S) | S – string | string | возвращает копию строки S с удаленными лидирующими пробелами |
TrimRight(S) | S – string | string | возвращает копию строки S с удаленными заключительными пробелами |
Процедуры для работы со строками
Имя и параметры | Типы параметров | Действие |
Delete (S, I, C); | S – string, I, C – byte | удаляет подстроку из строки S. I – номер первого удаляемого символа (если номер больше размера строки, символы не удаляются), С – число удаляемых символов (если символов в строке недостаточно, удаляется остаток символов) |
Insert (P, S, I,) | P,S – string, I – byte | помещает подстроку Р в строку S (если получается строка слишком большого размера, то она усекается до 255 символов). S – исходная строка; Р – подстрока, помещаемая в строку; I – номер позиции исходной строки, начиная с которой помещается подстрока |
SetLength(S,n) | S – string, n – integer | устанавливает длину строки S равной n |
Str(X,S) Str(X:n,S) Str(X:n:m,S) | S – string, X – integer, real , n, m – integer | преобразует X к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку S |