Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

BASIC:phpのexplode関数をMSX-BASICでそれっぽく実現する

 忘備録

 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$:区切られる文字列

出力

  • 配列変数 SP$:分割された文字列が順次格納されます(最大要素数:9)
  • TA:要素数が格納されます(最大:9)