![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Функция замены в строке всех вхождений одной подстроки на другуюDelphi , Синтаксис , Текст и Строки
Автор: Матюшкин Сергей { **** UBPFD *********** by delphibase.endimus.com **** >> В отличие от других подобных функций, эта - не зависнет, если в строке нужно заменить не только одно слово совершенно другим, но и допустим, слово "Штаны" на "-Штаны-" (Т.е. начальное слово после замены остается, но к нему добавляется какой нибудь символ справа, или слева. В данном случае по краям слова добавлен знак минуса). Я пересмотрел много примеров, и ни один из них не справился с этой задачей. (Может я плохо искал?). Зависимости: Windows, SysUtils Автор: Матюшкин Сергей, seregam@ua.fm, ICQ:162733776, Днепропетровск Copyright: Sergey_M Дата: 26 мая 2003 г. ***************************************************** } function Replace(Str, X, Y: string): string; {Str - строка, в которой будет производиться замена. X - подстрока, которая должна быть заменена. Y - подстрока, на которую будет произведена заменена} var buf1, buf2, buffer: string; i: Integer; begin buf1 := ''; buf2 := Str; Buffer := Str; while Pos(X, buf2) > 0 do begin buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + 1); buf1 := Copy(Buffer, 1, Length(Buffer) - Length(buf2)) + Y; Delete(buf2, Pos(X, buf2), Length(X)); Buffer := buf1 + buf2; end; Replace := Buffer; end; Пример использования: procedure TForm1.Button1Click(Sender: TObject); var a: Integer; begin for a := 0 to Memo1.Lines.Count do Memo1.Lines[a] := Replace(Memo1.Lines[a], 'Штаны', '-Штаны-'); end; Это реализация функции Основное преимущество этой реализации заключается в ее способности обрабатывать сложные заменения, когда оригинальное слово может оставаться целым, но иметь добавленные символы. Например, замена "Штаны" на "-Штаны-" как показано в комментариях. Далее приведен разбор работы функции:
Пример использования функции в процедуре Некоторые потенциальные улучшения для рассмотрения:
В целом реализация функции является ясной и компактной, что делает ее легко понимаемой и поддерживаемой. Функция замены в строке всех вхождений одной подстроки на другую, способная заменить не только одно слово, но и слова с добавлением символов справа или слева. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |