home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 101.img / QB45-1.ZIP / TOKEN.BAS < prev    next >
BASIC Source File  |  1987-09-23  |  1KB  |  46 lines

  1. ' TOKEN.BAS
  2. '
  3. ' Demonstrates a BASIC version of the strtok C function.
  4. '
  5. DECLARE FUNCTION StrTok$(Source$,Delimiters$)
  6.  
  7. LINE INPUT "Enter string: ",P$
  8. ' Set up the characters that separate tokens.
  9. Delimiters$=" ,;:().?"+CHR$(9)+CHR$(34)
  10. ' Invoke StrTok$ with the string to tokenize.
  11. Token$=StrTok$(P$,Delimiters$)
  12. WHILE Token$<>""
  13.    PRINT Token$
  14.    ' Call StrTok$ with a null string so it knows this
  15.    ' isn't the first call.
  16.    Token$=StrTok$("",Delimiters$)
  17. WEND
  18.  
  19. FUNCTION StrTok$(Srce$,Delim$)
  20. STATIC Start%, SaveStr$
  21.  
  22.    ' If first call, make a copy of the string.
  23.    IF Srce$<>"" THEN
  24.       Start%=1 : SaveStr$=Srce$
  25.    END IF
  26.  
  27.    BegPos%=Start% : Ln%=LEN(SaveStr$)
  28.    ' Look for start of a token (character that isn't delimiter).
  29.    WHILE BegPos%<=Ln% AND INSTR(Delim$,MID$(SaveStr$,BegPos%,1))<>0
  30.       BegPos%=BegPos%+1
  31.    WEND
  32.    ' Test for token start found.
  33.    IF BegPos% > Ln% THEN
  34.       StrTok$="" : EXIT FUNCTION
  35.    END IF
  36.    ' Find the end of the token.
  37.    EndPos%=BegPos%
  38.    WHILE EndPos% <= Ln% AND INSTR(Delim$,MID$(SaveStr$,EndPos%,1))=0
  39.       EndPos%=EndPos%+1
  40.    WEND
  41.    StrTok$=MID$(SaveStr$,BegPos%,EndPos%-BegPos%)
  42.    ' Set starting point for search for next token.
  43.    Start%=EndPos%
  44.  
  45. END FUNCTION
  46.