![]() |
AW: führende null entfernen
@Redeemer
Dafür müßtest Du das erste nicht 0 suchen, und dann kannst Du es am Stück löschen.
Delphi-Quellcode:
Gruß
i:=0;
if length(mystring)>0 then begin repeat if mystring[i+1]<>'0' then inc (i,1); until (mystring[i+1]<>'0') or (i>=length(mystring)); if i>0 then delete(mystring,1,i); end; K-H @KodeZwerg Dein zweites Beispiel kann Ärger machen, da Du die Länge des String nicht berücksichtigst. |
AW: führende null entfernen
Zitat:
|
AW: führende null entfernen
Zitat:
Delphi-Quellcode:
function RemDelLeadChar(const Input: string; const LeadChar: Char): string;
var i: Integer; begin i := 1; // String Index auf 1 (der erste) setzen Result := Input; // result mit input initialisieren if ((Length(Input) > 0) and (Input[1] = LeadChar)) then // wenn länge +1 und mit LeadChar anfängt dann... begin // block anfangen damit delete korrekt ausgeführt wird while (Input[i] = LeadChar) do inc(i); // solange leadchar vorne [i] vorkommt gib +1 auf i Delete(Result, 1, i-1); // da wenigstens ein LeadChar vorkam kann man bedenkenlos ausführen end; // ende vom länge/leadchar block if Result = '' then Result := LeadChar; // falls string leer ist, gib wenigstens ein leadchar wieder end; |
AW: führende null entfernen
Ein hätte ich auch noch:
Delphi-Quellcode:
Performance ist aber sicher nicht die beste, aber darum geht's hier ja nicht.
function RemoveLeftZero(input: string): string;
var i: integer; begin result:=''; for i:=1 to length(input) do if result<>'' then result:=result+input[i] else if input[i]<>'0' then result:=result+input[i]; end; |
AW: führende null entfernen
Und noch einen:
Delphi-Quellcode:
Schleife muss halt bei '0805668' nur zweimal durchlaufen.
function RemoveLeftZero(input: string): string;
var i: integer; begin result:=input; for i:=1 to length(input) do if input[i]='0' then delete(result, 1, 1) else Break; end; |
AW: führende null entfernen
KodeZwerg das Problem ist diese Zeile:
Delphi-Quellcode:
while (Input[i] = LeadChar) do inc(i);
Das kann bei einem String der komplett aus LeadChars besteht in die Hose gehen, weil zumindest mal Input[Length(Input)+1] gecheckt wird, was mit ein bisschen Pech knallen kann. Deswegen müsste es
Delphi-Quellcode:
while (i <= Length(Input)) and (Input[i] = LeadChar) do inc(i);
heißen |
AW: führende null entfernen
Zitat:
Ps: Bei meinen Samples könnte man die schleifen auch ab zweite position laufen lassen um einen doppelten check zu vermeiden aber da fehlt dann erst mal ein längen check ob überhaupt content eine länge von 2 besitzt. Ich wollte halt string operationen auf einen einzigen manipulator bringen, jeweils basierend auf einem count index-wert. |
AW: führende null entfernen
Zitat:
Delphi-Quellcode:
function DelLeadChar(const Input: string; const LeadChar: Char): string;
var i: Integer; begin i:=0; Result := Input; if length(Input)>0 then begin repeat if Input[i+1]=LeadChar then inc (i,1); // if Input[i+1]<>LeadChar then inc (i,1); // nicht gut ^_^ until (Input[i+1]<>LeadChar) or (i>=length(Input)); if i>0 then delete(Result,1,i); end; end; |
AW: führende null entfernen
Ich hätte mittels Schleife den Index des ersten Nicht-Null-Zeichens ermittelt und ab da einfach kopiert.
|
AW: führende null entfernen
:oops:
Typischer Fall von das eine Denken und das Andere tippen! Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 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 by Thomas Breitkreuz