![]() |
Ziffern aus String filtern
Hallo!
ich hab einen String, der aus einer Ziffer und aus mehreren Buchstaben besteht. Zum Beipiel: 'Masse = 7 kg' Die Buchstaben im String ändern sich nie, lediglich die Ziffer ist unterschiedlich. Wie kann ich prüfen, ob die Buchstaben wirklich 'Masse = # kg' sind und wie kann ich die enthaltene Ziffer in einen integer konvertieren. Es wäre eine Möglichkeit den Sting in mehrere Teile zu zerlegen und einzeln zu prüfen bzw zu konvertieren, aber gibt's da nicht eine elegantere Lösung? Gruß, Borti |
Re: formatierten Sting in Integer?
Helfen können dir z.B. POS, PosEx, TryStrToInt(), copy, ...
|
Re: formatierten Sting in Integer?
Das würde alles auch wieder auf ein zerlegen des Strings rauslaufen aber ich denk da an folgendes:
man kann ja einen integer mit Hilfe einer maske in einen String konvertieren
Delphi-Quellcode:
geht das nicht auch rückwärts, dass man über eine Maske sagt, wo sich die Buchstaben und wo die Ziffern verbergen?
formatfloat('####0.000',45.8)
|
Re: formatierten Sting in Integer?
Zerlegen hiermit:
Delphi-Quellcode:
Benutzen hiermit:
function TForm1.GetToken(aString, SepChar: string; TokenNum: Byte): string;
var Token: string; StrLen: Byte; Num: Byte; EndofToken: Byte; begin StrLen := Length(aString); Num := 1; EndofToken := StrLen; while ((Num <= TokenNum) and (EndofToken <> 0)) do begin EndofToken := Pos(SepChar, aString); if EndofToken <> 0 then begin Token := Copy(aString, 1, EndofToken - 1); Delete(aString, 1, EndofToken); Inc(Num); end else Token := aString; end; if Num >= TokenNum then Result := Token else Result := ''; end;
Delphi-Quellcode:
geteilterstring := (Trim(GetToken(stringdergeteiltwerdensoll,'#',1))); // # = trennzeichen 1 = welcher teil vom string ausgelesen werden soll
|
Re: formatierten Sting in Integer?
Mach mal im Beitragstitel den "Sting" oben mal ein "STRING".
Der Beitragstitel ist irreführend. Bei 40.000 Beiträgen(?) liest man sich zu Tode. Und "Ziffern aus String filtern" passt wohl eher. Parse den Text zwischen "=" und "kg". Also pos('=',DeinString) liefert die Position von = und pos('kg',DeinString) die Position von 'kg'. So müsste es (ungetestet) gehen: Var Zahlen als String anlegen... Zahlen:=Copy(Deinstring, pos('=',Deinstring)+1,Pos('kg',Deinstring)-pos('=',Deinstring)+1); Roter Kasten: Ich sende trotzdem mal meinen Vorschlag... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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