Text element in ein array

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 433
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Text element in ein array

Beitrag von marcelx »

Hallo,

ich habe ein Text wie zeile.s = "QWERT ASDFG 123" und möchte jeden Elemnt gesplittet mit " " in ein array speichern ?

Danke
Marcel
Win-10, PB 5.31 (Windows - x86)
Axolotl
Beiträge: 303
Registriert: 31.12.2008 16:34

Re: Text element in ein array

Beitrag von Axolotl »

Das Forum ist voll von guten Lösungen. Suche z.b: nach Split oder ähnlich. (Bei den meisten Lösungen lernt man auch noch was über Pointer)
Und, haste es schon mal selbst versucht?

Wenn es selbstgemacht sein soll, geht es mit zwei PB-Funktionen (schnell und einfach):

Code: Alles auswählen

Define zeile.s = "QWERT ASDFG 123"
Define Sep$ = " " 
Define Index, Count
Define Dim Result$(0)   ; Empty Array 

Count = CountString(zeile, Sep$) 

If Right(zeile, 1) <> Sep$ : Count + 1 :EndIf 
Dim Results$(Count) ; alloc the memory 

For Index = 1 To Count 
  Results$(Index - 1) = StringField(zeile, Index, Sep$)
  Debug Str(Index) + " = " + Results$(Index - 1)
Next Index 
Oder als Procedure:

Code: Alles auswählen

Define zeile.s = "QWERT ASDFG 123"
Define Dim Result$(0)   ; Empty Array 

Procedure StringToArray(String$, Array Out$(1), Sep$) ; return number of array items 
  Protected result, index, count, field$   

  count = CountString(String$, Sep$) 

  If Right(String$, 1) <> Sep$ : count + 1 :EndIf 
  Dim Out$(count)   ; alloc (and clear) the memory 

  For index = 1 To count 
    Out$(index-1) = StringField(String$, index, Sep$) 
  Next Index 
  ProcedureReturn count ; == ArraySize(Out$()) 
EndProcedure 


Count = StringToArray(zeile, Result$(), " ") 

Debug "Array Size == " + Count 
For Index = 0 To Count - 1 
  Debug Str(index) + " = " + Result$(Index) 
Next Index 
Okay, wenn du bis hier gekommen bist gibts noch einen Link als Belohnung.
Eine Lösung von mk-soft.
SplitString to list or array with option double-quotes (CSV)
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
marcelx
Beiträge: 433
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Text element in ein array

Beitrag von marcelx »

Wunderbar
Danke
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
H.Brill
Beiträge: 513
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Text element in ein array

Beitrag von H.Brill »

Ich hätte es jetzt so gemacht (ist ein klein wenig kürzer)

Code: Alles auswählen

zeile.s = "QWERT ASDFG 123"
Dim myarray.s(3)
For k = 1 To CountString(zeile, " ") + 1
	  myarray(k - 1) = StringField(zeile, k, " ")
    Debug myarray(k - 1)
Next
PB 6.10
Antworten