Процедуры и функции для работы со строками

При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже.

Функция concat(s1, s2, ..., sn) возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.

Функция copy(s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.

var
    s, sub: string;
    n, len: byte;
 
begin
    write('Исходная строка: ');
    readln(s);
 
    write('Позиция начала подстроки: ');
    readln(n);
 
    write('Длина подстроки: ');
    readln(len);
 
    sub := copy(s, n, len);
    writeln('Копия подстроки: ', sub);
 
    writeln('Исходная строка: ', s)
end.

Пример выполнения:

Исходная строка: one875two      
Позиция начала подстроки: 4
Длина подстроки: 3
Копия подстроки: 875
Исходная строка: one875two

Процедура delete(s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

var
    s: string;
    i, len: byte;
 
begin
    write('Исходная строка: ');
    readln(s);
 
    write('Позиция начала удаления: ');
    readln(i);
 
    write('Длина удаляемой подстроки: ');
    readln(len);
 
    delete(s, i, len);
 
    writeln(s);
end.

Пример выполнения:

Исходная строка: Apple Box Banana
Позиция начала удаления: 7
Длина удаляемой подстроки: 4
Apple Banana

Процедура insert(subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.

var
    s, sub: string;
    i: byte;
 
begin
    writeln('Исходная строка: ');
    readln(s);
 
    writeln('Подстрока для вставки: ');
    readln(sub);
 
    write('Позиция вставки: ');
    readln(i);
 
    insert(sub, s, i);
 
    writeln(s);
end.

Пример выполнения:

Исходная строка: 
Apple Banana
Подстрока для вставки: 
Orange        
Позиция вставки: 7
Apple Orange Banana

Функция length(s) возвращает фактическую длину строки s, результат имеет тип byte.

var
    s: string;
    len: byte;
 
begin
    readln(s);
 
    len := length(s);
 
    writeln(len);
end.

Пример выполнения:

one two
7

Функция pos(subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.

Процедуры преобразования типов

Процедура str(x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln. Например:

var 
    x: integer;
    s: string;
 
begin
    x := 123;
 
    str(x:6, s);
 
    writeln(s);
end.

Результат выполнения:

   123

Процедура val(s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено. Параметр errcode является необязательным:

var 
    x, errcode: integer;
    s: string;
 
begin
    s := '123';
 
    val(s, x, errcode);
 
    writeln('x1 = ', x + 1);
    writeln('errcode1 = ', errcode);
 
 
    s := '13ab';
 
    val(s, x, errcode);
 
    writeln('x2 = ', x);
    writeln('errcode2 = ', errcode);
 
 
    s := '13';
    val(s, x);
    writeln('x3 = ', x);
 
    s := '1a';
    val(s, x);
    writeln('x4 = ', x);
end.

Результат выполнения:

x1 = 124
errcode1 = 0
x2 = 0
errcode2 = 3
x3 = 13
x4 = 0