Редактирование строк

Функция

length (s : string):word;

вычисляет текущую длину строки s (количество символов в строке). Строка может быть задана идентифи­катором или непосредственно, в апострофах.

s:=¢Петербург¢

п:=length(s); {n = 9}

k:=length (¢Мы изучаем Паскаль¢); {k = 18}

m:=length ("); {m=0}

Пример. Дана строка s. Создать строку s1 из символов строки s, вставив после каждого символа ¢a¢ символ ¢c¢.

s1:=’¢;

for i:=1 to length (s) do

begin s1:=s1 + s[i];

if s[i] = ¢a¢ then s1:=s1 + ¢c¢

end;

Функция

pos (subs, s:string):byte;

вычисляет номер символа в строке s, с которого начинается первое включение в s подстроки subs. Если же s не содержит в себе subs, то функция даст результат 0.

s:=¢Компьютер¢;

п:=pos(¢ю¢, s); {п = 6}

s1:=¢Kомп¢;

k:=pos(s1, s); {k = 1}

Очевидным недостатком функции pos является то, что она возвращает только первую позицию subs в s от начала строки, т. е. после обращения к функции

р := pos (¢noo¢, ¢Boonoonoonoos¢);

она завершит свою работу, вернув значение 4, хотя есть еще и 7, и 10.

Функция

сору (s:string; start, len:integer):string;

позволяет выделить из строки последовательность из len символов, начиная с номера start. Если start больше длины всей строки s, то функция вернет пустую строку, а если len больше, чем число символов от start до конца строки s, вернется остаток строки s, от start до конца. Например:

scopy:=сору(¢ABС***123¢, 4, 3); {scopy ='***'}

scopy:=сору(¢АВС¢, 4, 3); {scopy ="}

scopy:=copy(¢ABC***123¢, 4, 11); {scopy ='*** 123¢}

Процедура

delete (var s:string; start, len:integer);

удаляет из строки s len символов, начиная с символа с номером start:

s:=¢СТРОКА¢;

delete (s, 2, 3); {s ='СКА'}

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

Если start = 0 или превышает длину строки s, то строка не изменяется. Также не изменит строку значение len = 0. При len большем, чем остаток строки, будет удалена подстрока от start и до конца s. Это можно использовать при «подрезании» строк до заданной величины:

delete (s, 17, 255);

Здесь строки s длиной менее 17 символов пройдут через процедуру неизменными, а все остальные будут укорочены до длины в 16 символов.

Если start > 255, возникнет ошибка при выполнении.

Процедура

insert (subs:string; var s:string; start:integer);

вставляет строку subs в строку s, начиная с позиции start:

s:=¢Начало–конец¢;

insert (¢середина–¢, s, 8 );

{теперь s = ¢Начало–середина–конец¢}

Если измененная строка s оказывается слишком длинной, то она автоматически укорачивается до объявленной длины s (при этом, как всегда, «теряется» правый конец строки).