Split()-Funktion

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Jolinah

Betreff: Split()-Funktion

BeitragMo, Mai 22, 2006 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine kleine Split()-Funktion, die auch mit längeren Separatoren funktioniert, d.h. nicht nur 1 Zeichen:

Code: [AUSKLAPPEN]
Function Split:String[](str:String, separator:String)
   Local ret:String[]
   Local pos:Int = 0
   Local old_pos:Int = 0
   
   pos = Instr(str, separator)
   old_pos = 1 - separator.Length
   While pos > 0
      ret = ret[..ret.Length+1]
      ret[ret.Length-1] = Mid(str, old_pos + separator.Length, pos - (old_pos + separator.Length))
      old_pos = pos
      pos = Instr(str, separator, old_pos + separator.Length)
   Wend
   
   ret = ret[..ret.Length+1]
   ret[ret.Length-1] = Mid(str, old_pos + separator.Length)

   Return ret   
End Function



Anwendung:
Code: [AUSKLAPPEN]
Local txt:String = "Wort1<-->Wort2<-->Wort3"

Local arr:String[] = Split(txt, "<-->")

For Local s:String = EachIn arr
   Print s
Next

Artemis

BeitragMo, Mai 22, 2006 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm,

meine Funktion (Explode()) tut das gleiche, hat noch einen zusätzlichen Parameter für die maximale Anzahl an Array-Einträgen, vergrößert das array nicht jeden durchlauf um eins, sondern erst am ende und prüft am anfang auf falsche parameter.

Jolinah

BeitragMo, Mai 22, 2006 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, hatte ich nicht gesehen. Ich hab die Funktion halt grad für was eigenes geschrieben, und dachte das können evtl. noch andere brauchen. Deine Funktion ist schon optimierter, aber unbrauchbar ist meine deswegen ja jetzt auch nicht gleich, hoffe ich Wink

Artemis

BeitragMo, Mai 22, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, hab vorhin mal speedtest gemacht, deine ist ein kleines bisschen schneller.

Jolinah

BeitragMo, Mai 22, 2006 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachdem ich deine angeschaut habe, hätte ich das jetzt nicht gedacht Rolling Eyes Aber deine müsste auf jedenfall schneller sein, wenn es darum geht nur die ersten paar Elemente zu nehmen, weil meine das nicht kann Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group