1. Процедура Delete(Var S:string; Start,n:byte) - удаление n символов строки S, начиная с позиции Start.
Пример 1.
Var S : string[15];
Begin
S:='0123456789';
Delete(S,5,3);
Результат: S='0123789'.
2. Процедура Insert(S1:string; Var S2:string; Start:byte) - вставка строки S1 в строку S2, начиная с позиции Start.
Пример 2.
VarS1,S2,S3 : string[10];
Begin
S1:='xyz'; S2:='01234';
S3:='0123456789';
Insert(S1,S2,3); Insert(S1,S3,3);
Writeln('S1=',S1); Writeln('S2=',S2);
Writeln('S3=',S3);
Будет отпечатано:
S1=xyz
S2=01xyz234
S3=01xyz23456
3. Процедура Str(X[:w[:d]]; Var S:string) - преобразование численного значения арифметического выражения X и размещение результата в строке S. После выражения X можно записывать формат, аналогичный формату вывода в процедурах Write, Writeln. Квадратные скобки после имени X указывают, что форматы w и (или) d необязательны.
Рассмотрим несколько подробнее работу процедуры Write при выводе в текстовый файл (экран дисплея, принтер, диск). При размещении числа на экране или на бумаге каждая цифра (символ) числа занимает отдельную позицию. Следовательно, число при размещении его в текстовом файле - это строка.
Работа процедуры Write разделяется на два этапа:
- преобразование числовой переменной из ее внутримашинного представления (в соответствии с описанием в разделе Var) в строку;
- вывод строки на внешний носитель информации.
Первый этап работы процедуры Write эквивалентен работе процедуры Str.
4. Процедура Val(S:string; Var X; Var Code:integer)- преобразование строки S в число X. При этом в строке S пробелы допускаются лишь до первого значащего символа. Переменная Code - это код ошибки. Если преобразование завершилось успешно, то Code = 0. В противном случае значение Code определяет позицию первого неправильного символа.
Рассмотрим несколько подробнее работу процедуры Read при вводе из текстового файла (клавиатура, диск). Число в текстовом файле представлено в виде строки, так как каждая цифра (символ) числа занимает отдельную позицию на внешнем носителе информации. Работу процедуры Read, как и процедуры Write, можно разделить на два этапа:
- преобразование строки в значение числовой переменной в соответствии с ее описанием в разделе Var;
- пересылка значения переменной в соответствующее поле памяти.
Первый этап работы процедуры Read совпадает с работой процедуры Val.
5. Функция Length(S:string):byte - определение текущей длины строки S. Действие функции length(S) эквивалентно вычислению выражения ord(S[0]) или byte(S[0]).
6. Функция Copy(S:string; Start,n:byte):string - выделение из строки S подcтроки длиной n байт, начиная с позиции Start. Если Start > length(S), то возвращается пустая строка.
7. Функция Concat(S1, S2, ... , Sn:string) : string - конкатенация (сцепление) строк S1, S2, ... ,Sn. Действие функции Concat эквивалентно операции "+".
8. Функция Pos(S1,S2:string):byte - определение позиции, с которой отмечается первое появление в строке S2 подстроки S1. Если S1 не содержится в S2, то выходное значение равно нулю.
9. Функция UpCase(ch:char):char - преобразование строчной латинской буквы в прописную букву. Символы ch вне диапазона 'a'...'z' остаются без изменения. Например, для UpCase('d') результатом является 'D'.
Примечание. В таблице ASCII ord(‘a’) = 97, ord(‘z’) = 122, ord(‘A’) = 65. В связи с этим работа функции UpCase по отношению к символу ch сводится к выполнению оператора
If (ord(ch)>=97) and (ord(ch)<=122) then
ch:=chr(ord(ch)-32);
Каждую из приведенных выше процедур и функций обработки строк можно реализовать в виде Паскаль-программы. Например, для процедуры Delete можно написать:
Procedure Delete(VarS:string; Start,n:byte);
Var i : byte;
Begin
Fori:=Start to length(S)-n do
S[i]:=S[i+n];
S[0]:=chr(length(S)-n);
End { Delete };
Тем не менее использование предопределенных процедур и функций обработки строк имеет следующие преимущества:
- предопределенные процедуры и функции записаны в библиотеке компилятора в объектном виде и не требуют машинного времени на их трансляцию;
- предопределенные процедуры и функции реализованы наиболее эффективным способом.