Процедуры и функции для работы со строками | Язык Паскаль
Pascal. Основы программирования Сложные Средние Простые задачи

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

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

Функция 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