ESO – Extra String Operations (Расширенные Операции обработки Строк)
Специализированная библиотека подпрограмм для работы со строками в Delphi.
Разработчик: Alex_soldier
Текущая версия: от 09.09.2009
Скачать: ESO.rar - 7 Кб
Обсудить: в форуме
В нее включены наиболее часто востребованные операции, своеобразные модификации стандартных функций и процедур, расширяющие их возможности:
* copy
* delete
* insert
* pos
* replace
Состав модуля ESO (34 подпрограммы):
function CopyStrSub( AStr: string; i1, i2: integer ): string;
Описание: Возвращает подстроку из строки по двум указанным позициям.
Пример: CopyStrSub('123456789', 2, 5) ==> '2345'
function CopyStrBetween( AStr, sepLeft, sepRight: string ): string;
Описание: Извлекает подстроку между двумя последовательностями символов.
Пример: CopyStrBetween('Элемент a[i]=0', 'a[', ']') ==> 'i'
procedure DelStrCharsChain( var AStr: string; AChar: char );
Описание: Удаление подряд идущих дублей заданного символа.
Пример: DelStrCharsChain('aaabbcccde', 'b') ==> 'aaabcccde'
procedure DelStrCharsChainAll( var AStr: string );
Описание: Удаление подряд идущих дублей всех символов.
Пример: DelStrCharsChainAll('aaabbcccde') ==> 'abcde'
procedure DelStrChars( var AStr: string; ADelChars: string );
Описание: Удаление из строки AStr всех символов, входящих в ADelChars.
Пример: DelStrChars('a1b2c3d4e5', '123') ==> 'abcd4e5'
procedure DelStrCharsNot( var AStr: string; ANotDelChars: string );
Описание: Удаление из строки AStr всех символов, кроме входящих в ANotDelChars.
Пример: DelStrCharsNot('a1b2c3d4e5', '5340') ==> '345'
procedure DelStrCharsBeg( var AStr: string; ADelChars: string );
Описание: Удаление из начала строки AStr всех символов, входящих в ADelChars.
Пример: DelStrCharsBeg('001.word_152', '.012345') ==> 'word_152'
procedure DelStrCharsEnd( var AStr: string; ADelChars: string );
Описание: Удаление из конца строки AStr всех символов, входящих в ADelChars.
Пример: DelStrCharsEnd('001.word_152', '_012345') ==> '001.word'
procedure DelStrSub( var AStr: string; ASubStr: string );
Описание: Удаление из строки AStr первое вхождение подстроки ASubStr.
Пример: DelStrSub('123456789-123456', '45') ==> '1236789-123456'
procedure DelStrSubIndex( var AStr: string; ASubStr: string; Index: integer );
Описание: Удаление из строки AStr i-го вхождения подстроки ASubStr.
Пример: DelStrSubIndex('123456789-123456', '45', 2) ==> '123456789-1236'
procedure DelStrSubAll( var AStr: string; ASubStr: string );
Описание: Удаление из строки AStr всех вхождений подстроки ASubStr.
Пример: DelStrSubAll('123456789-123456', '45') ==> '1236789-1236'
procedure DelStrBeg( var AStr: string; ABegStr: string );
Описание: Удаление из начала строки AStr подстроки ABegStr, если она там есть.
Пример: DelStrBeg('http://mail.ru/', 'http://') ==> 'mail.ru/'
procedure DelStrEnd( var AStr: string; AEndStr: string );
Описание: Удаление из конца строки AStr подстроки AEndStr, если она там есть.
Пример: DelStrEnd('http://mail.ru/', '/') ==> 'http://www.mail.ru'
function GetStrCount( AStr, ASubStr: string ): integer;
Описание: Подсчитать количество вхождений подстроки ASubStr в строку AStr.
Пример: GetStrCount('aaaaaabbbcccccddd', 'aa') ==> 3
procedure InsertStrAfterIndex( var AStr: string; ASubStr, ANewSubStr: string; Index: integer );
Описание: Вставка подстроки ANewSubStr в строку AStr после i-го вхождения подстроки ASubStr.
Пример: InsertStrAfterIndex('http://mail.ru/offers/', '/', 'www.', 2) ==> 'http://www.mail.ru/offers/'
procedure InsertStrAfterLast( var AStr: string; ASubStr, ANewSubStr: string );
Описание: Вставка подстроки ANewSubStr в строку AStr после последнего вхождения подстроки ASubStr.
Пример: InsertStrAfterIndex('http://mail.ru/offers/', '/', '14/') ==> 'http://mail.ru/offers/14/'
procedure InsertStrBeforeIndex( var AStr: string; ASubStr, ANewSubStr: string; Index: integer );
Описание: Вставка подстроки ANewSubStr в строку AStr перед i-м вхождением подстроки ASubStr.
Пример: InsertStrBeforeIndex('http://mail.ru/offers/', 'mail.ru', 'www.', 1) ==> 'http://www.mail.ru/offers/'
procedure InsertStrBeforeLast( var AStr: string; ASubStr, ANewSubStr: string );
Описание: Вставка подстроки ANewSubStr в строку AStr перед последним вхождением подстроки ASubStr.
Пример: InsertStrBeforeLast('http://mail.ru/offers/', '/', '-new') ==> 'http://mail.ru/offers-new/'
function IsStrBeg( AStr, ASubStr: string ): boolean;
Описание: Проверка, начинается ли строка подстрокой.
Пример: IsStrBeg('http://mail.ru/offers/', 'http://') ==> True
function IsStrEnd( AStr, ASubStr: string ): boolean;
Описание: Проверка, заканчивается ли строка подстрокой.
Пример: IsStrEnd('ShowMessage(AMessage)', ';') ==> False
function IsStrSub( AStr, ASubStr: string ): boolean;
Описание: Проверка, входит ли подстрока в строку.
Пример: IsSubStr('123456789', '345') ==> True
function IsStrPos( AStr, ASubStr: string; APos: integer ): boolean;
Описание: Проверка, есть ли в позиции APos строки AStr подстрока AsubStr.
Пример: IsStrPos('http://www.mail.ru', 'www.', 8) ==> True
function PosStrIndex( AStr, ASubStr: string; Index: integer ): integer;
Описание: Найти позицию i-го вхождения подстроки ASubStr в строку AStr. PosStrIndex('1121231234', '12', 2) ==> 4
function PosStrLast( AStr, ASubStr: string ): integer;
Описание: Найти позицию последнего вхождения подстроки ASubStr в строку AStr.
Пример: PosStrLast('1121231234', '12') ==> 7
function PosStrMore( AStr, ASubStr: string; APos: integer ): integer;
Описание: Найти позицию первого вхождения подстроки ASubStr в строку AStr, начиная с APos-го символа.
Пример: PosStrMore('1234512345', '12', 4) ==> 6
procedure ReplaceStrAll( var AStr: string; AOldSubStr, ANewSubStr: string );
Описание: Замена всех подстрок AOldSubStr в строке AStr на ANewSubStr.
Пример: ReplaceStrAll('1122222333', '22', '4') ==> '11442333'
procedure ReplaceStrIndex( var AStr: string; AOldSubStr, ANewSubStr: string; Index: integer );
Описание: Замена i-го вхождения подстроки AOldSubStr в строке AStr на ANewSubStr.
Пример: ReplaceStrIndex('1122222333', '22', '4', 2) ==> '112242333'
procedure ReplaceStrLast( var AStr: string; AOldSubStr, ANewSubStr: string );
Описание: Замена последнего вхождения подстроки AOldSubStr в строке AStr на ANewSubStr.
Пример: ReplaceStrLast('12345-12345-12345', '45', 'ab') ==> '12345-12345-123ab'
procedure ReplaceStrBefore( var AStr: string; ASubStr, ANewSubStr: string );
Описание: Замена подстроки до ASubStr на подстроку ANewSubStr.
Пример: ReplaceStrBefore('123456789', '45', '00') ==> '00456789'
procedure ReplaceStrAfter( var AStr: string; ASubStr, ANewSubStr: string );
Описание: Замена подстроки после ASubStr на подстроку ANewSubStr.
Пример: ReplaceStrAfter('123456789', '45', '00') ==> '1234500'
procedure ReplaceStrSub( var AStr: string; ANewSubStr: string; i1, i2: integer );
Описание: Замена в строке AStr подстроки по двум позициям.
Пример: ReplaceStrSub('123456789', '---', 2, 7) ==> '1---89'
procedure ReplaceStrBetween( var AStr: string; ANewSubStr, sepLeft, sepRight: string );
Описание: Замена в строке AStr подстроки между двумя последовательностями символов на ANewSubStr.
Пример: ReplaceStrBetween('Элемент a[5]=0', 'a[', ']', '7') ==> 'Элемент a[7]=0'
procedure ReplaceStrChars( var AStr: string; AReplaceChars: string; AChar: char );
Описание: Замена в строке AStr всех символов, входящих в AReplaceChars, на символ AChar.
Пример: ReplaceStrChars('http://www.mail.ru?welcome', '/\:;"*?<>()', '_') ==> 'http___www.mail.ru_welcome'
procedure ReplaceStrCharsNot( var AStr: string; ANotReplaceChars: string; AChar: char );
Описание: Замена в строке AStr всех символов, не входящих в ANotReplaceChars, на символ AChar.
Пример: ReplaceStrCharsNot('http://www.mail.ru?welcome', '/\:;"*?<>().', '_') ==> '____://___.____.__?_______'
Система протоколирования ошибок:
В свои библиотеки я встраиваю небольшое количество служебного кода, который при включенном режиме отладки собирает сведения о возникающих недопустимых ситуациях. К примеру, поиск пустой подстроки не имеет смысла. Данная ситуация отслеживается и, при ее обнаружении, не допускается выполнение каких-либо действий над результатом.
В начале работы следует включить режим отладки (протоколирования):
ErrorStartLog();
При этом начинает накапливаться лог ошибок (в оперативной памяти, дабы не было частых обращений к диску). В конце работы нужно задать файл для сохранения логов и прекратить их сбор (если задать пустую строку, то будет задействовано имя по-умолчанию):
ErrorStopLog('ErrorLogESO.txt');
При отладке большой программы бывает полезно просматривать промежуточные результаты. В данном случае для анализа будут сохраняться все некорректные вызовы библиотечных подпрограмм.
После завершения отладки проекта следует удалить ставшие уже ненужными обращения к режиму протоколирования, либо оставить, например если планируется техническая поддержка разработанной системы у пользователя.
|