String zerlegen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

String zerlegen

Beitrag von Quaxi »

Hello again :-)

Also ich habe eine Zahl Zb. 2047,50
Diese Zahl will ich nun auf jede Ziffer zerlegt in einen String Array speichern. Ich hab das alles schon mit Len usw probiert aber ich komme irgendwie damit nicht zusammen.
Das Endergebniss soll dann im Endeffekt etwa so aussehen:
text(1) = "2"
text(2) = "0"
text(3) = "4"
text(4) = "7"
text(5) = ","
text(6) = "5"
text(7) = "0"

danke im voraus
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Code: Alles auswählen

Procedure Zerleg(string.s)
   len=len(string)-1
   dim letter.s(len)
   for a=0 to len
          letter(a)=mid(string,a+1,1)
   next 
Endprocedure
dann fängts mit 0 an, was ich aber machen würde
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

tausend dank
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

So ich hab das nun so gemacht:

for abc = 1 to 7
text(abc) = mid(string,a,1)
next

allerdings will das nicht bei mir funktionieren.

ich will ausserdem wenn eine zahl zb 46.50 i string steht, die ersten 2 stellen mit 0en vollgeschrieben werden, allso so : 0046.50
danke im voraus
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

Falls ich kapier was du willst....

Code: Alles auswählen


zahlalsfloat.f=49.56
Debug zahlalsfloat

zahlalsstring.s=StrF(zahlalsfloat,2)
Debug zahlalsstring

#laenge=10

Dim zahlalsarray.s(#laenge)


zahlalsstring=RSet(zahlalsstring,#laenge,"0")
Debug zahlalsstring


For i=0 To #laenge
  zahlalsarray(i)=Mid(zahlalsstring,i,1)
Next i

For i=0 To #laenge
  Debug "stelle("+Str(i)+") = "+zahlalsarray(i)
Next i
  
  
Zuletzt geändert von wichtel am 21.09.2004 20:58, insgesamt 2-mal geändert.
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

Beitrag von topsoft »

oder so, aber ungetestet da auf Arbeit:

Code: Alles auswählen

Zahl.f = "23573.38"

TextZahl.s = StrF(Zahl, 2)
*AdressZaehler = @TextZahl
Dim ZahlAlsArray.s(Len(TextZahl) - 1)
ArrayCounter.l = 0

Wert.l = PeekB(*AdressZaehler)
While Wert <> 0
      ZahlAlsArray(ArrayCounter) = Wert
      ArrayCounter + 1
      *AdressZaehler + 1
      Wert.l = PeekB(*AdressZaehler)
Wend
End
Gruß Topsoft
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

Danke für eure Hilfe, aber ich konnte mein Problem bis jetzt noch nicht lösen. Allso hier nochmal genau mein Problem:

Ich habe eine Float Zahl mit 4 Stellen und 2 Nachkomma Stellen. Allso zb. 1234.56
Ich will diese Zahl nun grafisch ausgeben mit Sprites. Dazu muss ich aber erst wissen welche Ziffern die Zahl an welcher Stelle hat.
Also lies ich die Zahlen in einen String-Array ein und kann sie später abrufen und das entsprechende Sprite anzeigen.

Jetzt kommt noch dazu das wenn in der Float Zahl zb nur 47.55 steht ich die ersten zwei leeren stellen ich mit zwei 0en füllen muss.

Ich hoffe ihr versteht es jetzt besser.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Wie wäre es dann einfach hiermit.

Code: Alles auswählen

Procedure.s StrF_Ex(Float.f)
  Protected Result.s, n.l
  
  Result = RSet(StrF(Float, 2), 7, "0")
  
  ProcedureReturn Result
EndProcedure

Debug StrF_Ex(12.4)
Debug StrF_Ex(1234)
Debug StrF_Ex(0.133)
Debug StrF_Ex(0)
Debug StrF_Ex(1234.56)
Entspricht das deinen Wünschen?
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

Danke, jetzt funktioiert es!
Antworten