HSP sun HSP Programming Guide

HSP Guide [6]

文字列の長さ

HSPは文字列をデフォルト状態では64バイト(正確には63バイト)分扱えるようになってます。バイト(byte)という単位は、全角文字(漢字とかひらがななど)を2バイト、半角文字(英文字,数字)は1バイトです。strlen関数は文字列の長さ(バイト単位)で取得するものです。

//	すべて全角文字
	a="あいうおえ"
	mes ""+strlen(a)+"バイト"

//	すべて半角文字
	b="Hot Soup Processor HSP"
	mes ""+strlen(b)+"バイト"

64バイトを超える文字列を扱いたい場合は、あらかじめsdim命令で変数領域を確保しときましょう。前回の変数の話にある文字列用の「入れ物」の大きさというのをあらかじめ指定するわけです。

//	512バイト分確保
	sdim a,512
	a="あいうおえ"

文字列の検索

指定した文字が何バイト目にあるか調べるには、「instr」関数というのを使います。先頭は0バイトになります。検索しても見つからなかった場合は、−1が結果に返ります。

	a="Hot Soup Processor"
	check = instr(a,0,"Soup")
	mes ""+check+"バイト目"

	b="Hot Soup Processor"
	check = instr(b,0,"Cup")
	mes ""+check+"バイト目"

文字列の取り出し処理1

 特定の位置から文字を取り出しますには、「strmid」関数というのを使います。先頭は0バイトになります。何バイト目から何バイト分を取り出すかを指定すると、切り出した結果がそのまま返ります。

	a="Hot Soup Processor"

//	4バイト目から5バイト分取り出す
	mes "("+strmid(a,4,5)+")"

文字列の取り出し処理2

 指定文字までを取り出すには、「getstr」命令というのを使います。先頭は0バイトになります。システム変数strsizeには取り出した文字量(バイト)が代入されます。

	a="Hot Soup Processor"

	sdim kekka

//	半角スペースまでを取り出す
	getstr kekka,a,0,' '
	mes "("+kekka+")
	a="HSP,Hot,Soup,Processor,getstr"

	i=0
	sdim b,100

	repeat
//		「,」で区切られた文字を取り出す
		getstr b,a,i,','

//		取り出した量(strsize)が0ならループを抜ける
		if strsize=0 : break

		mes b

//		次の取り出しインデックスに移動
		i=i+strsize
	loop

	mes "(完了)"

テキストファイルを読み込んで、行番号を付けて表示します。「getstr」命令の第四パラメータに何も指定しないときは改行か終了コード(0x00)までの文字が取り出されます。(テキストファイルの利用はこの先のファイルの保存・読み込みの解説ページで。)

//	テキストファイルの読み込み
	notesel buf
	noteload "readme.txt"

	i=0
	number=1
	sdim b

	repeat
//		1行を取り出す
		getstr b,buf,i

		mes ""+number+" : "+b+""

		number++

//		10行を超えたらループを抜ける
		if number>10 : break

//		次の取り出しインデックスに移動
		i=i+strsize
	loop

	mes "(完了)"

< Prev | Next >

About

Welcome to HSP sun. Here is a site to introduces HSP, a free script language system.

Menu

Copyright(c) HSP sun [HSP]

inserted by FC2 system