HSPルーム

1-2.文字列操作

HSP3.0

文字列操作

HSPの文字列操作の命令は、ヘボッちいです。
私は、ツールを作成していてこの文字列操作の部分に悩まされたりします。

しかし、必要最低限の命令は用意されているので、覚えましょう。

getstr命令

getstr命令は、変数から文字列を読み出します。

getstr p1,p2,p3,p4  //バッファから文字列読み出し
 p1=変数 : 内容を読み出す先の変数名
 p2=変数 : バッファを割り当てた変数名
 p3=0〜 : バッファのインデックス(Byte単位)
 p4=0〜255 : 区切りキャラクタのASCIIコード
  ,(コンマ)を区切りにしたい場合、','というように指定します。

getstrサンプル
	c = "luna,luna,luna"
	getstr out,c,0,',' //変数outに変数cから,区切りで読み出す
	mes out
	stop

p3には読み出し開始位置を指定します。この場合、変数cの0バイト目からp4で指定されている「,」まで読み出します。
よみだしてやると、読み出したバイト数はシステム変数strsizeに代入されます。
(便利な機能ですが、難しいので覚えなくて結構です。)

getstrとstrsizeを使う
	c = "luna1,luna2,luna3,"
	getstr out,c,0,',' //変数outに変数cから,区切りで読み出す
	mes out
	getstr out,c,strsize,',' //strsizeを使っているところに注意。
	mes out
	stop

instr命令

getstrもあるなら当然?instr関数も存在します。

instr(p1,p2,"p3")
 p1=変数名 : 検索される文字列が格納されている文字列型変数名
 p2=0〜(0) : 検索を始めるインデックス
 "p3" : 検索する文字列

文字列を検索する関数です。"p3"で指定した文字列があるかどうか調べて、ある場合はインデックス値を返します。
この値は、何文字目にその文字があるかをあらわすものです。
見つからなかった場合は、-1が返ります

instrを使う
	c = "luna1luna2luna3"
	s = instr(c,0,"luna2"//p3の文字を検索します
	if s==-1 : mes "見つかりませんでした。" : else : mes "見つかりました"
	stop

変数の中に探している文字列があるかどうかを、instr命令で調べています。
(検索文字列が見つからなかった場合、-1が返るのを利用します。)