HSP命令講座 <strtrim関数>

Last Update : 2008/04/xx

PR HSPの書籍 『最新HSP3.2 プログラミング入門』

strtrim関数

 文字列から指定文字を取り除いた結果を返す関数です。HSP 3.2からサポートしています。関数名の由来は、「string trim」(goo辞書)から。

 strtrim(元のバッファ, モード, 取り除く文字)

 第1パラメータには文字を取り除く対象となる文字列型変数を指定します。第2パラメータはモードです。4つのモードが用意されており、モードごとに赤の部分が除去の対象となります。

p2の取り出しモード
- 元の文字列 AAsampleAAAAsampleAAA
両端から取り除く (デフォルト) AAsampleAAAAsampleAAA
左端側から取り除く AAsampleAAAAsampleAAA
右端側から取り除く AAsampleAAAAsampleAAA
全体から取り除く AAsampleAAAAsampleAAA

 第3パラメータは取り除く文字です。取り除ける文字(文字コード)として指定できるのは半角1バイト文字か、全角2バイト文字になります。アルファベットの大文字・小文字は区別されます。指定しない場合は、半角スペース(0x20)が除去の対象となります。

 全角1バイトは文字を半角の「’」(アポストロフィー)でくくることで文字コードへと変換できます。ひらがなや漢字など全角2バイトはwpeek関数で文字コードを取得できます。

//	半角文字

	mes "A:"+'A'+" 〜 Z:"+'Z'
	mes "a:"+'a'+" 〜 z:"+'z'
//	全角文字

	buf = "1", "A", "あ", "ア", "字", " "

	foreach buf
		mes "["+buf.cnt+"] "+wpeek(buf.cnt)
	loop

↑TOP↑

サンプルコード

 半角スペース、1バイト文字、2バイト文字を取り除くサンプルです。

//	半角スペース [HSP 3.2〜]

	buf = " あいうえお! !HSP      "

	mes "["+buf+"]"
	mes "["+strtrim(buf, 0)+"]"
	mes "["+strtrim(buf, 1)+"]"
	mes "["+strtrim(buf, 2)+"]"
	mes "["+strtrim(buf, 3)+"]"
//	TABスペース [HSP 3.2〜]

	buf = "AAA	あいA	うえお	AAA	BBB		A"

	mes "["+buf+"]"
	mes "["+strtrim(buf, 3, '\t')+"]"
//	1バイト文字 [HSP 3.2〜]

	buf = "AAAあいAうえお  AAA    BBB  A"

	mes "["+buf+"]"
	mes "["+strtrim(buf, 0, 'A')+"]"
	mes "["+strtrim(buf, 1, 'A')+"]"
	mes "["+strtrim(buf, 2, 'A')+"]"
	mes "["+strtrim(buf, 3, 'A')+"]"
//	2バイト文字 [HSP 3.2〜]

	buf = "あああHSPあHSPああ"

	moji = "あ"
	value = wpeek(moji)

	mes "["+buf+"]"
	mes "["+strtrim(buf, 0, value)+"]"
	mes "["+strtrim(buf, 1, value)+"]"
	mes "["+strtrim(buf, 2, value)+"]"
	mes "["+strtrim(buf, 3, value)+"]"

 複数の文字を取り除きたいなら、strtrim関数を複数回実行します。

//	複数の文字を取り除く [HSP 3.2〜]

	buf = "AAAXXsample XXXAsampleXXAA"
	mes buf

	value = 'A', 'X' ; 取り除く文字
	foreach value
		buf = strtrim(buf, 3, value.cnt)
	loop

	mes buf

 改行コード「CR(0x0D)+LF(0x0A)」は2回に分けて行う必要があります。

//	改行を取り除く [HSP 3.2〜]

	buf = "HSP XXX\nAAA\nXXXX\nあいうえお\nsample"
	mes buf

	value = $0D, $0A
	repeat 2
		buf = strtrim(buf, 3, value.cnt)
	loop

	mes buf

 HSPで作成した実行ファイルのアイコンにテキストファイルをドラッグ&ドロップした時、そのテキストデータを表示するサンプルです。Windows NT系OSの場合はファイルパス内に半角スペースが含まれていると、文字列の前後が「"」でくくられる仕様があります。その対処用にstrtrim関数を利用してます。(HSP 3.2以前の場合の対処方法)

//	コマンドライン文字列の対処 [HSP 3.2〜]

	if dir_cmdline = "" {
		dialog "コマンドラインパスがないので終了"
		end
	}

	title ""+dir_cmdline

	sdim filepath, 256
	filepath = dir_cmdline

;	テキストファイルの読み込み
	notesel buf
	noteload strtrim(filepath, , '"'), 500

	mes buf

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.