Показать сообщение отдельно
  #9  
Старый 09.12.2016, 07:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

2 @Rafa3L

Ну, коль пошла такая пьянка - режь последний огурец:
Код:
function MyStringReplace(ASrc, ASearchFor, AReplaceBy : String; AFlags : TReplaceFlags) : String;

  function GetStrIndex(AStr, APattern : String; AIgnoreCase : Boolean) : Integer;
  begin
    If AIgnoreCase
      Then Result := Pos(UpperCase(APattern),UpperCase(AStr))
      Else Result := Pos(APattern,AStr);
  end;

var
  Idx : Integer;
begin
  Result := ASrc;
  Idx := GetStrIndex(Result,ASearchFor,rfIgnoreCase in AFlags);
  While Idx > 0 Do
    Begin
      Delete(Result,Idx,Length(ASearchFor));
      Insert(AReplaceBy,Result,Idx);
      Idx := GetStrIndex(Result,ASearchFor,rfIgnoreCase in AFlags);
      If Not (rfReplaceAll in AFlags) Then Break;
    End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Memo1.Lines.Text :=
    MyStringReplace('abcd','abcd','{Replaced}',[]) + #13#10 +
    MyStringReplace('abcdabcd','abcd','{Replaced}',[]) + #13#10 +
    MyStringReplace('abcdabcd','abcd','{Replaced}',[rfReplaceAll]) + #13#10 +
    MyStringReplace('abcdABCD','abcd','{Replaced}',[rfReplaceAll]) + #13#10 +
    MyStringReplace('abcdABCD','abcd','{Replaced}',[rfReplaceAll,rfIgnoreCase]);
end;

Выдача:
Код:
{Replaced}
{Replaced}abcd
{Replaced}{Replaced}
{Replaced}ABCD
{Replaced}{Replaced}

Вроде, у меня с примером получилось короче, чем у тебя
Ответить с цитированием