Suggest adding StringReplaceAll with Replacement Count
Original Reporter info from Mantis: Avishai
-
Reporter name: Avishai
Original Reporter info from Mantis: Avishai
- Reporter name: Avishai
Description:
I would like to suggest adding a new funtion like StringReplace but adding a Replacement Count when rfReplaceAll is used. I copied StringReplace and assume 'rfReplaceAll' and added Count.
function StringReplaceAll(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags; Var Count: Integer): string;
var
Srch,OldP,RemS: string;
P : Integer;
begin
Count:= 0;
Srch:=S;
OldP:=OldPattern;
if rfIgnoreCase in Flags then begin
Srch:=AnsiUpperCase(Srch);
OldP:=AnsiUpperCase(OldP);
end;
RemS:=S;
Result:='';
while (Length(Srch)<>0) do begin
P:=AnsiPos(OldP, Srch);
if P=0 then begin
Result:=Result+RemS;
Srch:='';
end else begin
inc(Count);
Result:=Result+Copy(RemS,1,P-1)+NewPattern;
P:=P+Length(OldP);
RemS:=Copy(RemS,P,Length(RemS)-P+1);
//if not (rfReplaceAll in Flags) then begin
// Result:=Result+RemS;
// Srch:='';
//end else
Srch:=Copy(Srch,P,Length(Srch)-P+1);
end;
end;
end;
Mantis conversion info:
- Mantis ID: 23987
- Fixed in version: 3.3.1
- Fixed in revision: 41330 (#a750039f)
- Monitored by: » Avishai (Avishai)
- Target version: 3.2.0