09.12.2016, 07:39
|
Модератор
|
|
Регистрация: 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}
Вроде, у меня с примером получилось короче, чем у тебя
|