Die "Array-Lösung" ist vorallem dann angebracht, wenn man beliebige Umschlüsselungen von einzelnen Zeichen vornehmen möchte.
Falls man nur ein einziges Ersetzungzeichen hat (im deinem Beispiel das '|') dann wird wohl folgende Funktion
die maximale Leistung bringen:
Delphi-Quellcode:
function StrReplaceCharsInplace(var S: AnsiString; const Chars: TSysCharSet; Replace: AnsiChar): AnsiString;
var
I: Integer;
p : PChar;
begin
UniqueString(S);
p := PChar(S);
for I := Length(S)-1 downto 0 do
begin
if p^ in Chars then
p^ := Replace;
Inc(p);
end;
end;