Last Update : 2007/07/xx
文字列の長さを取得する関数です。命令名の由来は「string length」から。
第1パラメータには、文字列または文字列の入った変数を指定します。HSP2では、strlen命令という命令形式で提供されていましたが、HSP3では文字列も直接指定できるようになった以外で機能的な違いはありません。
strlen (文字列or文字列型変数)
返ってくる長さはバイト単位(Byte)になります。つまり、半角の英数字・カタカナは1文字を「1バイト」、全角の英数字・ひらがな・カタカナ・漢字は1文字を「2バイト」として計算することになります。もし、文字数単位で文字列の長さを取得したいならば、HSP3 あれこれ 文字列編のページをチェック。
| 文字の例 | サイズ |
| あ (ひらがな) | 2バイト |
| ア (カタカナ) | |
| 阿 (漢字) | |
| 1 / A (全角英数字) | |
| ★ / ♪ (全角記号) | |
| ア (半角カタカナ) | 1バイト |
| 1 / A (半角英数字) | |
| * / ? (半角記号) |
注意したいのは、strlen関数が取得できる長さはあくまで文字列だけです。たとえば、画像ファイルや音楽ファイルのようなバイナリデータの長さを取得することはできません。正確にはNULL文字(0x00)までの長さなので、望むような数値が返ってきません。ファイルサイズの取得はexist命令を利用します。
また、mes命令・print命令で描画された文字そのものの横・縦サイズ(ドット単位)を知りたければ、gifno関数(モード14・15)を利用します。
簡単なサンプルコードです。
; strlen関数サンプル [HSP3]
; 文字列 (HSP2ではこのような指定はできませんでした)
x = strlen("abcdef")
mes x
; 文字列型変数
data = "あいうえお"
mes strlen(data)
; 半角英文字3バイト+漢字4バイト
mes strlen("HSP言語")
ちなみに、TABスペースは何バイトだと思いますか? HSP3スクリプトエディタでは、TABスペースの幅(字数)をエディタの設定(ツリーの[エディタ]→[表示]の各種サイズ)から調整できるようになっていますが、はたしてどうでしょう。
; TABスペース
mes strlen(" ")
mes strlen("\t")
; ついでに、改行
mes strlen("\n")
文字列に関しては、HSP本体に付属するHTMLマニュアル『HSP3文字列のひみつ(中級者向け) (hsp3str.htm)』を参照してください。