String splitten

Anfängerfragen zum Programmieren mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

String splitten

Beitrag von Tombi »

Vorgabe:

Code: Alles auswählen

Beispiel$ = "ABC_SDIA 1298"
Gewünschtes Ergebnis:

Code: Alles auswählen

BeispielA$ = "ABC_SDIA"
BeispielB$ = "1298"
Ich möchte sozusagen, in einem String alle Leerzeichen splittern um die einzelnen Teile dann einzeln abrufen zu können.

Auch gerne als Ergebnis eine Array, hauptsache ich habe einzeln Zugriff auf die Teile.

Das Leerzeichen stellt somit eine "Trennung" zwischen A und B dar.
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: String splitten

Beitrag von TomS »

Schau mal in der Hilfe nach dem Befehl StringField()
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Re: String splitten

Beitrag von marco2007 »

Hilfe -> Library String
Windows 11 - PB 6.03 x64
_________________________________
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: String splitten

Beitrag von TomS »

marco2007 hat geschrieben:Hilfe -> Library String
Und dann? Alle Befehle durchprobieren? :?
Wer mit der String-Lib bis jetzt noch wenig bis gar nichts gemacht hat, wird sicher nicht schnell mal 20 Befehle auschließen können.
Und wer in anderen Sprachen mit Strings gearbeitet hat, wird nach explode oder split suchen und in der PB-Hilfe nicht fündig werden.
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Re: String splitten

Beitrag von marco2007 »

Ja!
1. Schadet es nicht
2. Nach fast 2 Jahren (Joined: 05 Mar 2008) kann man das schon verlangen!
Windows 11 - PB 6.03 x64
_________________________________
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: String splitten

Beitrag von Tombi »

marco2007 hat geschrieben:Ja!
1. Schadet es nicht
2. Nach fast 2 Jahren (Joined: 05 Mar 2008) kann man das schon verlangen!
Danke euch.

Leider beschäftige ich mich nicht dauerhaft sondern nur zeitweiße mit PB und kannte dessen Befehl nicht.
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: String splitten

Beitrag von TomS »

(Date()-Reg-Datum) * 24 <> Stunden mit PB Programmieren verbracht.

Nach dieser Rechnung müsste meine Oma ja fitter mit Computern sein als ich, denn sie war ja schon auf der Welt, als die ersten Heimcomputers auf den Markt kamen.

Sicherlich schadet es nicht mal die Hilfe zu lesen, zumal die PB-Hilfe ja noch vergleichsweise ziemlich überschaubar ist.
Aber das sollte man dann in seiner Freizeit (wenn man grade nix bestimmten proggen will, sondern aus langeweile Däumchen dreht) machen. Denn wenn man krampfhaft nach einem einzigen Befehl sucht, merkt man sich eh nix.
Macht der Befehl das, was ich will? Nein? Gut dann vergess ich den mal schnell wieder.
Little John

Re: String splitten

Beitrag von Little John »

Hauptsache er splittert nicht die Leerzeichen ...
Ich möchte sozusagen, in einem String alle Leerzeichen splittern
Die danach herumliegenden Splitter sind für wenig Erfahrene wohl doch zu gefährlich. :mrgreen:

Gruß, Little John
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: String splitten

Beitrag von mk-soft »

Wer Slit(...) bekannt aus VB vermist kan auch dieses verwenden :mrgreen:

Code: Alles auswählen

EnableExplicit

Global text1$

text1$ = "Stringfield ist eine extrem langsame Funktion"
text1$ + " und wenn du weiter mit einer Array arbeiten willst,"
text1$ + " dann könnte dies schneller sein. Das solltest du mal Testen !"

Dim Woerter.s(0)

Procedure Split(text.s, separator.s, Array result.s(1))

  Protected *mem.Character = @text 
  Protected *posi.character = *mem - SizeOf(character)
  Protected anz, pos
  Protected zeichen = Asc(separator)
  
  anz = CountString(text, separator)
  anz + 1
  ReDim result(anz)
  
  Repeat
  
    If *mem\c = zeichen 
      *posi + SizeOf(character)
      result(pos) = PeekS(*posi, (*mem - *posi) / SizeOf(character))
      pos + 1
      *posi = *mem
    EndIf
    *mem + SizeOf(character)
   
  Until *mem\c = 0
  *posi + SizeOf(character)
  result(pos) = PeekS(*posi, (*mem - *posi) / SizeOf(character))
  ProcedureReturn anz

EndProcedure

Define c,i
c = Split(text1$, " " , Woerter())
For i = 0 To c - 1 
  Debug "("+Woerter(i)+")"
Next
FF :wink:

P.S. PB v4.41 (x64). Wegen bug bei Dim innerhalb von einer Procedure auf ReDim geändert.
Bug bereit gemeldet.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Re: String splitten

Beitrag von 7x7 »

@mk-soft:
Spitzencode. Jetzt hat es 'Tombi' als Anfänger mit Sicherheit kapiert wie es geht.
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Antworten