Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 548

•  TDictionary Custom Sort  5 704

•  Fast Watermark Sources  5 492

•  3D Designer  8 012

•  Sik Screen Capture  5 791

•  Patch Maker  6 277

•  Айболит (remote control)  6 278

•  ListBox Drag & Drop  5 141

•  Доска для игры Реверси  94 326

•  Графические эффекты  6 460

•  Рисование по маске  5 525

•  Перетаскивание изображений  4 659

•  Canvas Drawing  5 043

•  Рисование Луны  4 771

•  Поворот изображения  4 311

•  Рисование стержней  3 037

•  Paint on Shape  2 268

•  Генератор кроссвордов  3 136

•  Головоломка Paletto  2 463

•  Теорема Монжа об окружностях  3 252

•  Пазл Numbrix  2 128

•  Заборы и коммивояжеры  2 773

•  Игра HIP  1 751

•  Игра Go (Го)  1 666

•  Симулятор лифта  1 993

•  Программа укладки плитки  1 717

•  Генератор лабиринта  2 153

•  Проверка числового ввода  1 844

•  HEX View  2 135

•  Физический маятник  1 841

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Функция замены в строке всех вхождений одной подстроки на другую



Автор: Матюшкин Сергей

{ **** 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;







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте