Дополнительные функции обработки строк:
В модуле StrUtils.pas содержатся полезные функции для обработки строковых переменных. Чтобы подключить этот модуль к программе, нужно добавить его имя (StrUtils) в раздел Uses.
1) PosEx(SubStr, Str: String; Offset: Integer) — функция аналогична функции Pos(), но позволяет задать отступ от начала строки для поиска. Если значение Offset задано (оно не является обязательным), то поиск начинается с символа Offset в строке. Если Offset больше длины строки Str, то функция возратит 0. Также 0 возвращается, если подстрока не найдена в строке. Пример:
uses StrUtils;
{ … }
var Str1, Str2: String; P1, P2: Integer;
{ … }
Str1:=’Hello! How do you do?’;
Str2:=’do’;
P1:=PosEx(Str2, Str1, 1); { P1 = 12 }
P2:=PosEx(Str2, Str1, 15); { P2 = 19 }
2) Функция AnsiReplaceStr(Str, FromText, ToText: String) — производит замену выражения FromText на выражение ToText в строке Str. Поиск осуществляется с учётом регистра символов. Следует учитывать, что функция НЕ изменяет самой строки Str, а только возвращает строку с произведёнными заменами. Пример:
uses StrUtils;
{ … }
var Str1, Str2, Str3, Str4: String;
{ … }
Str1:=’ABCabcAaBbCc’;
Str2:=’abc’;
Str3:=’123′;
Str4:=AnsiReplaceStr(Str1, Str2, Str3); { Str4 = «ABC123AaBbCc» }
3) Функция AnsiReplaceText(Str, FromText, ToText: String) — выполняет то же самое действие, что и AnsiReplaceStr(), но с одним исключением — замена производится без учёта регистра. Пример:
uses StrUtils;
{ … }
var Str1, Str2, Str3, Str4: String;
{ … }
Str1:=’ABCabcAaBbCc’;
Str2:=’abc’;
Str3:=’123′;
Str4:=AnsiReplaceText(Str1, Str2, Str3); { Str4 = «123123AaBbCc» }
4) Функция DupeString(Str: String; Count: Integer) — возвращает строку, образовавшуюся из строки Str её копированием Count раз. Пример:
uses StrUtils;
{ … }
var Str1, Str2: String;
{ … }
Str1:=’123′;
Str2:=DupeString(Str1, 5); { Str2 = «123123123123123″ }
5) Функции ReverseString(Str: String) и AnsiReverseString(Str: AnsiString) — инвертируют строку, т.е. располагают её символы в обратном порядке. Пример:
uses StrUtils;
{ … }
var Str1: String;
{ … }
Str1:=’0123456789′;
Str1:=ReverseString(Str1); { Str1 = «9876543210″ }
6) Функция IfThen(Value: Boolean; ATrue, AFalse: String) — возвращает строку ATrue, если Value = True и строку AFalse если Value = False. Параметр AFalse является необязательным — в случае его отсутствия возвращается пустая строка.
uses StrUtils;
{ … }
var Str1, Str2: String;
{ … }
Str1:=IfThen(True, ‘Yes’); { Str1 = «Yes» }
Str2:=IfThen(False, ‘Yes’, ‘No’); { Str2 = «No» }
Мы рассмотрели функции, позволяющие выполнять со строками практически любые манипуляции. Как правило, вместо строки с указанным типом данных, можно использовать и другой тип — всё воспринимается одинаково. Но иногда требуются преобразования. Например, многие методы компонент требуют параметр типа PChar, получить который можно из обычного типа String функцией PChar(Str: String):
uses ShellAPI;
{ … }
var FileName: String;
{ … }
FileName:=’C:\WINDOWS\notepad.exe’;
ShellExecute(0, ‘open’, PChar(FileName), », », SW_SHOWNORMAL);
Тип Char представляет собой один-единственный символ. Работать с ним можно как и со строковым типом. Для работы с символами также существует несколько функций:
Chr(Code: Byte) — возвращает символ с указанным кодом (по стандарту ASCII):
var A: Char;
{ … }
A:=Chr(69); { A = «E» }
Ord(X: Ordinal) — возвращает код указанного символа, т.е. выполняет противоположное действие функции Chr():
var X: Integer;
{ … }
X:=Ord(‘F’); { X = 70 }
Из строки можно получить любой её символ — следует рассматривать строку как массив. Например:
var Str, S: String; P: Char;
{ … }
Str:=’Hello!’;
S:=Str[2]; { S = «e» }
P:=Str[5]; { P = «o» }
В этой статье описаны основные приёмы работы со строковыми типами данных. Как правило, этих данных достаточно для написания любого алгоритма.
Июль
1,
2008
— Filed under: Delphi
Метки: алгоритм, данные, Дополнительные функции
