Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#5

Re: Doppelte Zeichen in einem String finden/löschen

  Alt 6. Nov 2009, 19:47
Delphi-Quellcode:
function DeleteChar(const s: AnsiString): AnsiString;
var
  u: set of AnsiChar;
  i: integer;
begin
  result := s;
  u := [];
  i := 1;
  while i <= Length(result) do
    if result[i] in u then
      delete(result, i, 1)
    else
    begin
      Include(u, result[i]);
      Inc(i);
    end;
end;
Delphi-Quellcode:
function DeleteChar(const s: AnsiString): AnsiString;
var
  u: set of AnsiChar;
  i: integer;
begin
  result := '';
  u := [];
  for i := 1 to Length(s) do
    if not (s[i] in u) then
    begin
      Include(u, s[i]);
      result := result + s[i];
    end;
end;
die Ersten sind schneller, gehen aber nur für AnsiStrings (also für String bis Delphi 2007)
Delphi-Quellcode:
function DeleteChar(const s: string): string;
var i, j: integer;
begin
  result := s;
  i := 1;
  while i <= Length(result) do
    for j := 1 to i - 1 do begin
      if result[i] = result[j] then
        Delete(result, i, 1)
      end
      else
        Inc(i);
    end;
end;
und das entspricht deinem.

wobei in While- und Repeat-Schleifen in jedem Durchgang die Ausstiegsbedingung neu bewertet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat