How to split a long string into separate words in Commodore BASIC
Posted in: 64
Posted: 2016-11-01 12:49:11

Here’s a quick word splitter routine for CBM BASIC. It takes phrase and “explodes” all words into an array, removing spaces. Feel free to adopt it for your own needs.

10 rem word splitter
20 rem splits a long phrase into words at a space
30 input "tell me something";a$
40 rem clear current array of words
50 for i=0 to 10: wd$(i)="": next: wd=1
60 rem detect spaces
70 for i=1 to len(a$)
80 wd$(0)=mid$(a$,i,1)
90 if wd$(0)=" " then wd=wd+1: next
100 wd$(wd)=wd$(wd)+wd$(0): next
110 print
120 rem print all words
130 for i=1 to 10
140 if wd$(i)="" then 160
150 print wd$(i)
160 next

Line 50 clears an array of 10 words called WD$(n). We also setup a word counter called WD. So in this example we can only detect a maximum of ten words. If you need more, you must DIM the array first.

Lines 70 loops through all characters in our phrase. We make use of the first element in our array WD$(0) to store each single character. If it’s a space, we’ll increase the word counter and move on to the next character. If it’s not (line 80), then we’ll add this character to the current word which is stored in WD$(WD).

The rest of the code simply prints each word on a new line to see our handy work.