Ich hätte mittels Schleife den Index des ersten Nicht-Null-Zeichens ermittelt und ab da einfach kopiert.
Weicht Deine Methode von den gezeigten ab? (Vielleicht mittels Pointer-Operation fällt mir auf die schnelle noch ein)
Das ist doch was KodeZwerg als aller erstes gepostet hat oder nicht?
Ja. Das erschien mir die performanteste Umsetzung.
Delphi-Quellcode:
function RemLeadChar(const Input: string; const LeadChar: Char): string;
var
i, ii: Integer;
begin
ii := 0;
// if Length(Input) > 0 then // ein zeichen minimum um weiter zu kommen // den check kann man sich sparen
// if Input[1] = LeadChar then // fängt String nicht mit LeadChar an gibts nichts zu tun // den check kann man sich sparen
for i := 1 to Length(Input) do // komplette stringlänge abarbeiten initialisieren
if Input[i] = LeadChar then ii := i else Break; // kommt vorne ein LeadChar vor Position merken
if ii > 0 then Result := Copy(Input, ii+1, Length(Input)) // entweder anfang verwerfen
else Result := Input; // oder eingabe zurück
if Result = '' then Result := LeadChar; // falls input leer oder nur aus LeadChars bestand, gib wenigstens ein LeadChar zurück
end;