Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Aufeinander folgende Whitespaces entfernen, eins lassen

  Alt 20. Mär 2005, 12:47
Zitat von Mois:
Danke es funktioniert.
Wenn es um größere Text geht, dann dürfte obige Methode sehr langsam werden. Hier eine optimierte Lösung:
Delphi-Quellcode:
function RemoveUnwantedSpace(const Txt: AnsiString): AnsiString;
var
  I: Integer;
  Used: Integer;
  InCh: ^Char;
  LastWasSpace: Boolean;
  Res: AnsiString;
begin
  SetLength(Res, Length(Txt));
  if Length(Txt) > 0 then
  begin
    Used := 0;
    LastWasSpace := False;
    InCh := @Txt[1];
    for I := 1 to Length(Txt) do
    begin
      if InCh^ = #32 then
      begin
        if not LastWasSpace then
        begin
          Inc(Used);
          Res[Used] := InCh^;
          LastWasSpace := True;
        end;
      end
      else
      begin
        LastWasSpace := False;
        Inc(Used);
        Res[Used] := InCh^;
      end;
      Inc(InCh);
    end;
    SetLength(Res, Used);
  end;
  Result := Res;
end;
Aufruf wie folgend:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := RemoveUnwantedSpace(Edit1.Text);
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat