19 lines
653 B
Forth
19 lines
653 B
Forth
: split ( str len separator len -- tokens count )
|
|
here >r 2swap
|
|
begin
|
|
2dup 2, \ save this token ( addr len )
|
|
2over search \ find next separator
|
|
while
|
|
dup negate here 2 cells - +! \ adjust last token length
|
|
2over nip /string \ start next search past separator
|
|
repeat
|
|
2drop 2drop
|
|
r> here over - ( tokens length )
|
|
dup negate allot \ reclaim dictionary
|
|
2 cells / ; \ turn byte length into token count
|
|
|
|
: .tokens ( tokens count -- )
|
|
1 ?do dup 2@ type ." ." cell+ cell+ loop 2@ type ;
|
|
|
|
s" Hello,How,Are,You,Today" s" ," split .tokens \ Hello.How.Are.You.Today
|