Шаг 35.
Процедуры и функции для обработки строковой информации


    Перечислим основные процедуры и функции, которые предназначены для работы с переменными строкового типа.

Определение длины строки
Удаление части символов строки
Вставка символов в строку
Поиск подстроки в строке
Склеивание строк
Копирование строк
Перевод числа в строку
Перевод строкового выражения в число

    1. Определение длины строки. Вычисление текущей длины строки производится с помощью функции Length. Ее общий вид следующий:


     Length (<выражение строкового типа>):Integer;
Результатом данной функции является целое число, равное текущему количеству символов в строке. Например, при выполнении следующих конструкций:

     St:='Язык Паскаль';
     K:=Length(St);
значение целой переменной K будет равно 12.

    Со строковыми переменными можно производить операции сравнения (<, <=, >, >=, <>) по правилу сравнения десятичных дробей. Сравнение строк осуществляется посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом делается вывод о знаке неравенства. Например,

    2. Удаление части символов строки. Для удаления из строки фрагмента используется процедура Delete, общий вид которой следующий:


Рис.1. Общий вид процедуры Delete

    Например, при выполнении процедуры Delete('Язык Паскаль',5 ,8) из строки будут удалены 8 символов, начиная с пятого, и исходная строка будет иметь вид: 'Язык'.

    3. Вставка символов в строку. Для вставки символов в строку используется процедура Insert. Ее общий вид следующий:


Рис.2. Общий вид процедуры Insert

    Например, в результате выполнения процедуры Insert('111', 'ABC',2); результирующая строка будет такой:'A111BC'.

    4. Поиск подстроки в строке. Для определения позиции подстроки в строке используется функция Pos, общий вид которой следующий:


Рис.3. Общий вид функции Pos

    Результат этой функции целое число. Оно определяет номер элемента, с которого начинается первое вхождение подстроки в строку. Если подстрока в строку не входит, то значение функции равно нулю. Например, при выполнении конструкции k1:=Pos('BC','ABCD'); значение переменной k1 равно 2, так как функция Pos возвращает номер элемента, с которого подстрока первый раз встречается в строке. При выполнении оператора k1:=Pos('ABCD',' BC'); значение переменной k будет равно нулю.

    Приведем пример программы, иллюстрирующей выше описанные конструкции. Пусть в заданном тексте нужно заменить все вхождения подстроки 'del' на 'insert'.

    Решение и комментарии вы можете посмотреть здесь.

    5. Склеивание строк. Для "склеивания" строк используется функция Concat, общий вид которой следующий:


    Concat(<строка1>,<строка2>,...,<строкаN>):String;

    Например, после выполнения следующих конструкций:


   A:='Пар';
   B:='ход';
   C:= Concat(A,'о',B);
   WriteLn(C);
на экран будет выведено сообщение: "Пароход ".


Замечание.
    "Склеивание" строк можно производить, используя символ "+", например, C:=A+'о'+B; в результате строка C будет иметь вид: 'Пароход'.

    6. Копирование строк. Для копирования строк или их фрагментов используется функция Copy. Ее общий вид:


Рис.4. Общий вид функции Copy

    Например, при выполнении оператора WriteLn(Copy ('Язык Паскаль',6,7)) на экран будет выведено сообщение:" Паскаль".

    Часто возникает необходимость получить строковое представление числа и наоборот (например, получить строку '13' из числа 13). Для работы с числами и строками применяются следующие две процедуры.

    7. Перевод числа в строку. Для перевода числа в строку используется процедура Str, общий вид которой следующий:


Рис.5. Общий вид процедуры Str

    Например, Str(1.21, St); в результате выполнения процедуры строка будет такой: St='1.21'.

    8. Перевод строкового выражения в число. Для перевода строки в число используется процедура Val. Ее общий вид:


Рис.6. Общий вид процедуры Val

    Если данная строка действительно является записью числа (целого или действительного), то значение признака будет равно нулю, иначе значение признака будет равно номеру первого символа, с которым процедура Val "не справилась", то есть преобразование этого символа является невозможным.

    Например, при выполнении процедуры Val ('1234',N,K); значение переменной N будет равно 1234, а переменная K будет равна нулю, так как строка '1234' является записью целого числа. При выполнении конструкции Val('12-34',N,K); значение переменной N не изменится, а переменная K будет равна трем, то есть номеру символа, с которого преобразование невозможно, так как знак "-" в записи чисел может быть только на первом месте.

    Проиллюстрируем использование некоторых процедур и функций на примере следующей программы: подсчитать сумму цифр, входящих в данную строку.

    Решение и комментарии вы можете посмотреть здесь.

   

Определение длины строки
Удаление части символов строки
Вставка символов в строку
Поиск подстроки в строке
Склеивание строк
Копирование строк
Перевод числа в строку
Перевод строкового выражения в число


    На следующем шаге мы разберем еще несколько задач, при решении которых используются перечисленные конструкции.


Предыдущий шаг Содержание Следующий шаг