GetToken - Teile eines Strings zurückgeben

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Nox

Betreff: GetToken - Teile eines Strings zurückgeben

BeitragFr, Dez 09, 2005 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag zusammen.
Ich benötigte heute eine Funktion ähnlich der C-Funktion 'strtok()' und wollte diese hier direkt mal reinstellen:

BlitzBasic: [AUSKLAPPEN]

; Returns the Nth token of a string with a custom delimiter character.
Function GetToken$( fullstr$, splitchar$, toknum% )
Local charpos% = 1, curtoken% = 0, tokenend%, tokenlen% = 0

While( charpos% )

curtoken% = curtoken% + 1 ; New token found, increase index.
If( curtoken% = toknum% ) ; Reached wanted token.

tokenend% = Instr( fullstr$, splitchar$, charpos% + 1 ) ; Get end of token.
If( tokenend% = 0 )
tokenend% = Len( fullstr$ ) ; If last token, end is last char.
tokenlen% = 1 ; Not ending with split char, inc length.
EndIf

If( curtoken% > 1 ) Then ; Skip split character.
charpos% = charpos% + 1
EndIf

tokenlen% = tokenlen% + tokenend% - charpos% ; Calculate length of token.
Return Mid( fullstr$, charpos%, tokenlen% ) ; Return token.

EndIf

charpos% = Instr( fullstr$, splitchar$, charpos% + 1 )
Wend

Return \"\" ; Invalid token index/not found, return empty string.

End Function


Zur Funktionsweise (anhand eines Beispiels):
BlitzBasic: [AUSKLAPPEN]

foobar$ = \"Test-1:2-3\"
a$ = GetToken( foobar$, \"-\", 1 )
b$ = GetToken( foobar$, \"-\", 2 )
c$ = GetToken( foobar$, \":\", 2 )
d$ = GetToken( foobar$, \":\", 3 )


a$ wäre in diesem Fall "Test", b$ "1:2", c$ "2-3" und d$ "". Bei Letzterem wurde das 3. Token mit dem Delimiter ":" gefordert, welches allerdings nicht existiert.

Viel Freude damit. Der Code darf natürlich in jedem Projekt vergewaltigt werden, Credits sind keine nötig. Macht damit, was ihr wollt. Wink[/syntax]
 

#Reaper

Newsposter

BeitragFr, Dez 09, 2005 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Aaaa..sowas brauch ich doch immer mal wieder, thx Very Happy

MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group