![]() |
führende null entfernen
Hallo zusammen,
ich bekomme es leider nicht hin, eine führende Null bzw führende Nullen aus einem String zu entfernen. Ich habe z.B. diese Artikelnummer: 00850046. Diese soll zu 850046 geändert werden.
Code:
Ich dachte, er geht diesen String so lange durch bis er auf keine Null mehr trifft und bricht dann ab.
For i := 1 to Length(nr_pzn_bereinigt) do
begin If nr_pzn_bereinigt[i] = '0' Then Delete(nr_pzn_bereinigt, i, 1) Else Break; Geht leider nicht. Kann jemand helfen? |
AW: führende null entfernen
Ja, macht er wahrscheinlich auch, direkt bei StringElement[0] wo die Länge des Strings drin steht.
|
AW: führende null entfernen
Sofern sichergestellt ist, dass sich im String ausschließlich Ziffern befinden, wäre StrToInt mit einem anschließenden Zurückwandeln mit IntToStr nicht einfacher?
Grüße Dalai |
AW: führende null entfernen
Zitat:
Das Problem ist, dass der String kürzer wird, und die Schleife so quasi "verrutscht" Schleifendurchlauf: i=1: 00850046 => 0850046 i=2: 0850046 Die zweite 0 hat er quasi jetzt schon übersprungen weil sich die 2. 0 jetzt nach dem Löschen der ersten auch an Position 1 befindet aber die Schleife jetzt schon bei i=2 ist. |
AW: führende null entfernen
Zitat:
(Edit: Da war jemand schneller) |
AW: führende null entfernen
Delphi-Quellcode:
geht, solange nur Ziffern vorkommen, kommt mal ein Buchstabe (oder besser einen Nichtziffer) geht's schief.
nr_pzn_bereinigt[i] := IntToStr(StrToInt(nr_pzn_bereinigt[i]));
Delphi-Quellcode:
Beispiel zu Deinem Vorgehen:
while Copy(nr_pzn_bereinigt[i],1,1) = '0' do begin
nr_pzn_bereinigt[i] := Copy(nr_pzn_bereinigt[i],2,Length(nr_pzn_bereinigt[i])); end; i ist 1 00850046 1. Zeichen = '0' 0850046 bleibt dann übrig i wird nun 2 zweites Zeichen ist nun 8, da das erste Zeichen entfernt wurde. 0850046 bleibt dann übrig i wird nun 3 drittest Zeichen = 5 0850046 bleibt dann übrig i wird nun 4 viertes Zeichen = 0 085046 bleibt dann übrig i wird nun 5 fünftes Zeichen = 4 085046 bleibt dann übrig i wird nun 6 fünftes Zeichen = 6 085046 bleibt dann übrig Das ist eher so 'ner Art zufälliges Nullenentfernen, abhängig davon wieviele Nullen vorher dort waren und an welcher Position sie sich befinden. |
AW: führende null entfernen
@Delphi.Narium: Deine Simulation stimmt nicht ganz, weil er bei i=2 mit break rausspringen würde, weil '8' <> '0'
|
AW: führende null entfernen
In Unit JclStrings könnte man
Delphi-Quellcode:
aufrzufen um einen "850046" String zu erhalten, ansonsten schließe ich mich Dalei an, hier ein mini Beispiel dazu:
StrTrimCharLeft('00850046', '0');
Delphi-Quellcode:
function EntferneNullen(const Input: String): String;
begin Result := IntToStr(StrToIntDef(Input,0)); end; |
AW: führende null entfernen
Wenn die Version im Profil stimmt, könnte man das natürlich auch über
Delphi-Quellcode:
lösen
nr_pzn_bereinigt := nr_pzn_bereinigt.TrimLeft(['0']);
|
AW: führende null entfernen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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