![]() |
Zahlen aus String extrahieren
Hi,
wie kann ich z.B bei "asj231k1-.21oa=" alle Zahlen extrahieren, existietr dafür schon eine Methode oder muss ich mich ran setzen und eine selber dafür schreiben? |
AW: Zahlen aus String extrahieren
Mal schnell zusammengeflickt....
Delphi-Quellcode:
Könntest auch zuerst alle Nicht-Zahlen aus dem String löschen und dann den "Reststring" dem Result zuordnen.
function ExtractNumbers(s : String) : String;
var i : Integer; begin Result := ''; for i := 1 to length(s) do if s[i] in ['0'..'9'] then Result := Result + s[i] end; |
AW: Zahlen aus String extrahieren
Was meinst du mit alle Zahlen extrahieren?
- einen String ohne Fremdzeichen "231121" - alle Zahlen(gruppen) einzeln "231", "1" und "21" - ... |
AW: Zahlen aus String extrahieren
|
AW: Zahlen aus String extrahieren
Sorry für die späte antwort.
Himitsu alle Zahlen meinte ich nicht gruppiert oder sonstiges. Ich versuch nachher gleich einmal scrat1979 Code. |
AW: Zahlen aus String extrahieren
Moin,
Zitat:
Zitat:
Nichts gegen dich youuu. MfG Fabian |
AW: Zahlen aus String extrahieren
Zitat:
|
AW: Zahlen aus String extrahieren
Zitat:
- schneller - öfters - anderes Extraktionsmuster Also kann man es sich nun aussuchen: - "lösche alles, was keine Zahl ist"
Delphi-Quellcode:
- "hänge alle Zahlen an einen neuen String an"
function GetNum(S: String): Integer;
var i: Integer; begin for i := Length(S) downto 1 do if not (S[i] in ['0'..'9']) then Delete(S, i, 1); Result := IntToStr(S); end; (siehe scrat1979) - "füge alle Zahlen in einen neuen String ein", bzw. "... einem neuen String zusammen" function ExtractNumbers(s : String) : String;
Delphi-Quellcode:
Von den letzen beiden Varianten ist Michaels zwar 'nen "Hauch" langsamer, aber dafür bissl verständlicher.
var i : Integer;
begin Result := ''; for i := 1 to length(s) do if s[i] in ['0'..'9'] then Insert(S[i], Result, MaxInt); end; Schneller geht es dann nur noch (wenn man es denn unbedingt braucht), indem man - bei langen Strings alles Gewünschte/Erlaubte via PChar in einen String mit maximal zu erwartender Länge kopiert und den String dann kürzt - bei "kurzen" Strings alles Gewünschte/Erlaubte zählt, den neuen String mit passender Länge erstellt und dann die gewünschten Teile da reinkopiert. jenachdem was schneller geht - die zusätzliche String- und Speicheroperation - alles zusätzlich nochmal durchzugehn und mitzuzählen |
AW: Zahlen aus String extrahieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo himitsu,
nehmen wir an, daß ich aus einer Webseite Lotoozahlen kopiere und in ein Editfeld eingebe. Dabei habe ich ein paar Zeichen mitkopiert. Nun möchte ich gern die Lottozahlen (ein- und zweistellig) extrahieren und in ein IntegerArray schreiben...:oops: Ich habe da was hingebogen, das auch funktioniert nicht ganz, denn bei der letzten zweistelligen Zahl wird nur die erste Ziffer angezeigt... Gibt es da einen anderen Ansatz? Ich füge es mal ein.
Delphi-Quellcode:
Im Anhang ein Schnappschuss, das den Fehler zeigt
USES...
{Zahlen und Zeichen von der Zwischenablage ins Edit eingeben und bei Enter nur die Zahlen ausgeben. Es werden die Zahlen als Integerwerte in ein IntegerArray mit 6 Indexes gespeichert Die Zahlengröße ist auf 2 Stellen begrenzt.} Type TLottoresult = array of Integer; //---------------------------------------------- function TForm1.IsZahl(AChar:char):boolean; begin result := AChar in ['0'..'9']; end; //---------------------------------------------- function TForm1.LZahlen(kopStr:string):TLottoresult; var i,a:integer; t:string[2]; flag:boolean; begin setLength(Result, 6); a := -1; for i:= 1 to length(kopStr) do begin if isZahl(kopstr[i])and (a < high(Result))then begin if (flag = false) {and (a < high(Result)) }then inc(a); t:=t+kopStr[i]; result[a]:=strtoint(t); flag:=true; end else begin flag:=false; t:=''; end; end; Label2.Caption:= 'IntegerArrayIndexes: '+ inttostr(a); Label3.caption:=' Es fehlen noch '+ inttostr((high(Result)- a))+ ' Zahlen'; end; //---------------------------------------------- procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Lottoresult:TLottoresult; i:integer; str:string; begin {bei Enter das Array auslesen und die Zahlen mit Leerzeichen ausgeben} if Key = VK_Return then begin LottoResult := LZahlen(Edit1.text); for i := 0 to high(LottoResult) do str := str + ' ' + IntToStr(LottoResult[i]); Label1.Caption:='String mit Zahlen: '+str; end; end; |
AW: Zahlen aus String extrahieren
Delphi-Quellcode:
Tip am Rande mit [F7]/[F8] eine Kleinigkeit.
begin
t:=''; flag:=false; setLength(Result, 6); a := -1; for i:= 1 to length(kopStr) do begin if isZahl(kopstr[i])and (a <= high(Result))then begin if not(flag) {and (a < high(Result)) }then inc(a); t:=t+kopStr[i]; result[a]:=strtoint(t); flag:=true; end else begin flag:=false; t:=''; end; end; Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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