![]() |
AW: Zahlen in einem String finden
Zitat:
Delphi-Quellcode:
var
sInput, sOutput: String; i: Integer; begin sInput := 'abc1def6q3uz3sdd8as2'; sOutput := ''; for i := 1 to Length(sInput) do if sInput[i] in ['0'..'9'] then sOutput := sOutput + sInput[i]; end; |
AW: Zahlen in einem String finden
Also Elegant wäre ein Callback (Event) zu verwenden.
Delphi-Quellcode:
Das Argument von
TNumberEvent = procedure(const number:string) of object;
procedure ExtractNumbers(const s : string; callback :TNumberEvent); begin if not Assigned(callback) then Exit; // Rest ist Hausaufgabe end;
Delphi-Quellcode:
könnte auch ein Integer sein, aber dann besteht die Gefahr des Überlaufs.
TNumberEvent
|
AW: Zahlen in einem String finden
Wobei ich mich erstmal gefragt hatte, was tNumArray sein soll.
PS:
Delphi-Quellcode:
if (ord(Str[i]) >= 48) and (ord(Str[i]) <= 57) then begin
if (Str[i] >= '0') and (Str[i] <= '9') then begin if CharInSet(Str[i], ['0'..'9']) then begin // früher if Str[i] in ['0'..'9'] then begin |
AW: Zahlen in einem String finden
Einen hab ich auch noch (im Editor getippt, daher ohne jede Gewähr):
Delphi-Quellcode:
function CountNumber(const Str: string): tNumArray;
const MIN_NUMINDEX = $30; var ArrIndex: integer; p: PChar; begin SetLength(Result, Length(Str)); ArrIndex := 0; p := PChar(Str); if Assigned(p) then begin while p^ <> #0 do begin {$IFDEF UNICODE} if CharInSet(p^, ['0'..'9']) then {$ELSE} if p^ in ['0'..'9'] then {$ENDIF} begin Result[ArrIndex] := Ord(p^) - MIN_NUMINDEX; inc(ArrIndex); end; p := CharNext(p); end; SetLength(Result, ArrIndex); end; end; |
AW: Zahlen in einem String finden
Vielleicht so etwas?
![]() Ist sicherlich nicht ganz nah dran an elegant, aber war mal mehr für Ausbildungszwecke gedacht im Bereich Zustände/Zustandsmaschinen... Bietet aber die Option Integer und Floatwerte zu extrahieren, optional negative Zahlen zuzulassen, etc... Jan |
AW: Zahlen in einem String finden
Was versteht der Fragesteller eigentlich unter 'ELEGANT'?
Wo ist der Unterschied zu 'elegant' (klein geschrieben) Meint er 'Kompakt'?
Delphi-Quellcode:
Wäre jetzt das "ELEGANT"este, was mir einfällt.
for c in s do
if IsDigit(c) Then result.add(ord(c)-48); |
AW: Zahlen in einem String finden
Ich muss beim Schreiben anscheinend eine Wolldecke im Mund haben :roll:
Bislang habe ich noch nicht gesehen, was rein- und rauskommen soll. Nur irgendwelchen Code, wo die Typbezeichnungen etwas anderes suggerieren als der Code wirklich liefern kann (ich beziehe mich auf den TE). Wenn ich als Eingabeparameter einen String habe und die Funktion CountNumber heißt, dann würde ich als Ergebnis ein Integer erwarten der mir die Anzahl der Zahlen in dem String liefert. Diese Funktion liefert aber ein NumArray (ein Array von Zahlen) zurück. Ok, es sollen also Zahlen zurückgegeben werden. Schaue ich mir den Code an, dann stelle ich fest, dass
Code:
Irgendwie hätte ich jetzt das erwartet
a35s4 => (3,5,4,0,0)
Code:
Evtl. kann mir mal jemand (der TE) eine Kerze anzünden und mich erleuchten
a35s4 => (35,4)
|
AW: Zahlen in einem String finden
Anhand seines Beispielcodes gehe ich bislang davon aus, dass er ein Array aus Ziffern befüllen möchte.
|
AW: Zahlen in einem String finden
Zitat:
TNumArray passt zur Fragestellung, aber das darin enthaltene Ergebnis wiederum in keinster Weise Es kann doch nicht zuviel verlangt sein, wenn man eine kleine Textzeile als Erklärung erwartet. Die Vorlage habe ich ja gegeben |
AW: Zahlen in einem String finden
ich denke er möchte so etwas machen
Delphi-Quellcode:
Gruß
myarray = array [0..255] of integer;
fillchar(myarray,sizeof(myarray),#0); for i:=1 to length(mystring) do inc(myarray[byte(mystring[i]),1)]; for i:=byte('0') to i:=byte('9') do writeln(char(i)+' '+inttostr(myarray[i]); K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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