Глава 3 Более сложные элементы языка
____________________________________________________________________
a:= 'Head&Shoulders';
writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(a));
c:= Copy(a, 6, 9);
c:= UTF8Copy(a, 6, 9); // можно и так
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(c));
a:= 'Меню:Окружение';
writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(a));
//c:= Copy(a, 6, 9); // это неправильно!
//c:= Copy(a, 10, 18); // но можно так c:= UTF8Copy(a, 6, 9); // лучше всего так
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(c));
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
Процедура Delete- удаляет из строки подстроку
Описание:
Delete(var S: string, index: integer, count: integer);
S – исходная строка, index – номер символа, начиная с которого удаляет-
ся подстрока из S, count- количество символов в подстроке. Также имеет-
ся аналогичная процедура UTF8Delete().
Пример:
program procedure_delete;
{$mode objfpc}{$H+}
181
3.3Обработка символьной информации в Паскале
____________________________________________________________________
uses
CRT, FileUtil, LCLProc;
var
a: string;
begin
a:= '123XYZ';
writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(a));
UTF8Delete(a, 4, 3);
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(a));
a:= '123АБВ';
writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(a));
UTF8Delete(a, 4, 3);
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(a));
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
Процедура Insert – добавляет подстроку в строку.
Описание:
Insert(Source: string, S: string, index: integer);
Source - исходная строка
S- добавляемая строка
index - номер символа строки Source, начиная с которого добавля-
ется подстрока S.
182
Глава 3 Более сложные элементы языка
____________________________________________________________________
Пример:
program procedure_insert; {$mode objfpc}{$H+}
uses
CRT, FileUtil, LCLProc; var
S: string; begin
S:= '1236789'; writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(S));
Insert('45', S, 4);
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(S));
S:= 'абвеѐжзиклмн';
writeln(UTF8ToConsole('Исходная строка: '),
UTF8ToConsole(S));
UTF8Insert('гд', S, 4);
writeln(UTF8ToConsole('Результирующая строка: '),
UTF8ToConsole(S));
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
Функция Pos- производит поиск подстроки в строке.
Описание:
Pos(Substr, S: string): Byte;
Substr –подстрока, поиск которой производится в строке S. Функция
Pos возвращает номер символа, начиная с которого подстрока Substr найде-
183
3.3Обработка символьной информации в Паскале
____________________________________________________________________
на в S. Если такой подстроки нет, то возвращается 0. В модуле LCLProc
имеется аналогичная функция UTF8Pos().
Пример:
program function_pos_1; {$mode objfpc}{$H+} uses
CRT, FileUtil; var
S: string; i: integer;
begin
S:= 'МАМАША'; i:= Pos('ША', S);
writeln(UTF8ToConsole('Строка: '), UTF8ToConsole(S)); writeln(UTF8ToConsole('Номер символа, с которого')); writeln(UTF8ToConsole('начинается подстрока "ША"= '), i); writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
Пример: Дана строка символов. Определить, входит ли в эту строку под-
строка 'ША'. Строку ввести с клавиатуры.
program function_pos_2; {$mode objfpc}{$H+} uses
CRT, FileUtil, LConvEncoding , LCLProc; var
184
Глава 3 Более сложные элементы языка
____________________________________________________________________
S: string; Substr: string; i: integer;
begin
writeln(UTF8ToConsole('Введите строку символов')); readln(S);
{$IFDEF WINDOWS}
S:= CP866ToUTF8(S);
{$ENDIF}
Substr:= 'ША';
i:= UTF8Pos(Substr, S); if i = 0 then
writeln(UTF8ToConsole('В данной cтроке ') + UTF8ToConsole(S) + UTF8ToConsole(' подстрока '), UTF8ToConsole(Substr) +
UTF8ToConsole(' отсутствует'))
else
writeln(UTF8ToConsole('подстрока ') +
UTF8ToConsole(Substr) +
UTF8ToConsole(' входит в данную строку с номера символа '), i); writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
Процедура Str – преобразует численное значение в его строковое пред-
ставление. Описание:
Str(X[: width[: decimals]], S: string);
X- числовая переменная (типа integer или real)
width - длина строки S; decimals - количество знаков после за-
пятой.
185