Seite 1 von 2

String splitten

Verfasst: 30.01.2010 14:13
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.

Re: String splitten

Verfasst: 30.01.2010 14:20
von TomS
Schau mal in der Hilfe nach dem Befehl StringField()

Re: String splitten

Verfasst: 30.01.2010 14:20
von marco2007
Hilfe -> Library String

Re: String splitten

Verfasst: 30.01.2010 14:23
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.

Re: String splitten

Verfasst: 30.01.2010 14:25
von marco2007
Ja!
1. Schadet es nicht
2. Nach fast 2 Jahren (Joined: 05 Mar 2008) kann man das schon verlangen!

Re: String splitten

Verfasst: 30.01.2010 14:31
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.

Re: String splitten

Verfasst: 30.01.2010 14:34
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.

Re: String splitten

Verfasst: 30.01.2010 15:03
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

Re: String splitten

Verfasst: 30.01.2010 16:20
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.

Re: String splitten

Verfasst: 30.01.2010 20:36
von 7x7
@mk-soft:
Spitzencode. Jetzt hat es 'Tombi' als Anfänger mit Sicherheit kapiert wie es geht.