![]() |
TrimChars
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe eine Trim-Funktion gesucht, die am Anfang und/oder am Ende eines Strings beliebige Zeichen löscht. Da ich keine solche Funktion gefunden habe, habe ich selbst eine geschrieben. Eure Meinung dazu bitte:
Delphi-Quellcode:
function PATrimChars(S: string; CS: TSysCharSet; T: Char): string;
var i: integer; begin Result := S; if T in ['L', 'B'] then // L = Left, B = Both begin for i := 1 to Length(Result) do begin if not (Result[i] in CS) then begin Result := Copy(Result, i, Length(Result) - i + 1); BREAK; end; end; end; if T in ['R', 'B'] then // R = Right, B = Both begin for i := Length(Result) downto 1 do begin if not (Result[i] in CS) then begin Result := Copy(Result, 1, i); BREAK; end; end; end; end; |
Re: TrimChars
Hi,
es funktioniert, von daher :thumb: Aber gab es da nicht auch TrimLeft und TrimRight für ? |
Re: TrimChars
Zitat:
|
Re: TrimChars
Moin Peter,
ich würde nicht jedesmal, wenn ein Zeichen zu entfernen ist dieses auch tun, sondern erst einmal nur zählen, wieviele Zeichen jeweils zu entfernen sind, und erst zum Schluss das Ergebnis erstellen. Das dürfte der Performance guttun ;-) |
Re: TrimChars
Zitat:
Schönen Gruß! |
Re: TrimChars
Ich denke schon, daß Christian sich den Code angeschaut hat.
Er hat wahrscheinlich das gemeint:
Delphi-Quellcode:
Grüßefor i:= .... if not (Result[i] in CS) then begin Result := Copy(Result, 1, i); BREAK; end; Klaus |
Re: TrimChars
Hallo,
ich habe die Funktion etwas überarbeitet, sie kommt jetzt mit einem Copy aus, außerdem wird der QuellString als const übergeben. Das sollte die Performance etwas steigern.
Delphi-Quellcode:
Gruß
function PATrimChars(const S: String; CS: TSysCharSet; T: Char): String;
var i: Integer; L, Left, Right: Integer; begin L := Length(S); Left := 1; if T in ['L', 'B'] then // L = Left, B = Both begin for i := 1 to L do begin if not (S[i] in CS) then begin Left := i; Break; end; end; end; Right := L; if T in ['R', 'B'] then // R = Right, B = Both begin for i := L downto 1 do begin if not (S[i] in CS) then begin Right := i; Break; end; end; end; Result := Copy(S, Left, Right - Left + 1); end; xaromz |
Re: TrimChars
Moin Peter,
ja angeschaut hatte ich mir den Code aber wohl nicht genau genug :oops: :wall: |
Re: TrimChars
T als Char? Für so etwas wurden Sets erfunden ;) .
|
Re: TrimChars
Zitat:
Schönen Gruß! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz