String auseinander nehmen
Hallo!
Vielleicht könnt ihr mir helfen. Also ich habe ein String mit dem Namen Text. Dieser Text ist bei der Rückgabe immer unterschiedlich lang. Aber am ende des Strings steht immer eine Zahl z.b 1 oder 12 oder eine andere. So und diese Zahl möchte ich jetzt in der integer variable wert haben. Weiß aber nicht wie ich das machen soll, da ich nie weiß wie groß der String ist und wie viele Stellen die Zahl hat. Kann mir da jemand helfen? |
Re: String auseinander nehmen
die länge des strings bekommst du mit Length(s) und das n-te Zeichen mit Copy(s, n, 1)
siehe auch online-Hilfe mit StrToInt(Copy(s, n, 1)) machst du aus der ziffer an der n-ten stelle im string s eine zahl |
Re: String auseinander nehmen
Oder auch so:
Delphi-Quellcode:
var str : string = '12345';
i:integer; begin i:= StrToInt(str[2]); // i := 2; end; |
Re: String auseinander nehmen
Zitat:
|
Re: String auseinander nehmen
Nein.
Strings beginnen mit index 1. Sind halt nicht 0 "based". |
Re: String auseinander nehmen
Für beliebig lange Zahlen am Stringende:
Delphi-Quellcode:
Das ist eher als Idee als als fertiger Code gedacht, aber (+/-) 1 müsste er funktionieren.
i:= length(str)-1;
// String wird von hinten durchgegangen und geschaut, wann die erste nicht-Zahl auftaucht. while str[i] in ['0'..'9'] do dec(i); result:= strtoint(copy(str,i,length(str)-i)); |
Re: String auseinander nehmen
Wenn Du nicht weisst, wielang der String ist und wieviele Stellen die Zahl hat, dann könnte ein regulärer Ausruck eine gute Lösung sein.
Für Deinen Fall etwa :
Code:
Allerdings setzt das voraus, das Du eine entsprechende Library installiert hast, wie z.B. TRegExpr.
/^.*(\d*)$/
:hi: |
Re: String auseinander nehmen
Also irgendwie hab ichs noch nicht richtig hinbekommen.
Habs bis jetzt so: Und es geht halt nur bei einem einstelligem wert am Ende logisch ist halt fest gesetzt.
Code:
kann man nicht rausbekommen, was bei einem String nach dem Wort Line: für Zahlen kommen?
str:=PHPOutPut.Items.Strings[PHPOutPut.Itemindex];
i:= StrToInt(str[length(str)]); Denn das Letzte Wort vor den Zahlen ist Line: (bzw wenn es nicht line ist soll die aktion gar nicht durchgeführt werden) |
Re: String auseinander nehmen
Wenn du die Buchstaben vor der Zahl kennst, kannst du auch mit pos arbeiten.
per int:=pos(str,'line'); kommst du an die Position von line im String. Danach kannst du per copy die Buchstaben rausholen. |
Re: String auseinander nehmen
Zitat:
Delphi-Quellcode:
MfG
var myStr: string;
... p:= pos('line:', myStr); if p >0 then begin ShowMessage('"line:" ist in myStr enthalten'); //mach irgendwas end else //'line:' ist nicht im myStr vorhanden Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz