忘備録
phpでいうexplode関数(旧split関数。区切り文字で文字列を分割して配列変数に代入するやつ)に相当する処理をMSX-BASICで実現するのってけっこう面倒臭いですね…。
BASICプログラムコード
100 'text split sub.
110 '[in] A$:separator, B$:string
120 '[out] SP$():array, TA:array count
130 '[use] TA, TI, TA$
140 TA=0:TI=0:TA$=""
150 FOR TI=1 TO LEN(B$)
160 IF MID$(B$,TI,1)=A$ THEN TA=TA+1
170 NEXT
180 IF 9<TA THEN TA=9:'max array No.
190 ERASE SP$:DIM SP$(TA)
200 TA=0
210 FOR TI=1 TO LEN(B$)
220 TA$=MID$(B$,TI,1)
230 IF A$<>TA$ THEN SP$(TA)=SP$(TA)+TA$ ELSE TA=TA+1:IF 9<TA THEN TI=LEN(B$)
240 NEXT
250 RETURN
使い方
A$=":":B$="a:bb:ccc:dddd"
GOSUB <サブルーチンの行番号>
入力
- A$:区切る文字(1文字)
- B$:区切られる文字列
出力
けっきょく最大要素数のカウントをさぼらず認識することにした。MSX BASICは文字列は255文字までだし配列変数のメモリ確保が大きいので最大用途数9で十分とは思うけど。ここまで作っとけば他の用途でも使えるかな? pic.twitter.com/HV2ojL0lDZ
— Takashi Kobayashi (@nf_ban) June 10, 2021