カンマ区切りの文字列を分割する

Tera Termマクロには任意の区切り文字で文字列を分割出来る"strsplit"というコマンドが用意されています。
ただし、これはバージョン4.67以降でないと使えません。

バージョンアップが出来ない環境において、文字列を区切る方法です。
以下の例は、カンマで区切られた文字列を分割して、1ワードずつ取り出す、アフィリエイトのリンクを踏んで下さいと言わんばかりのマクロです。

    ↓
    ↓

サンプルソース

;分割対象の文字列
TITLE = 'VISAといえば'
STRING = '三井,住友,VISAカード'

call GetWord
messagebox WORD TITLE

call GetWord
messagebox WORD TITLE

call GetWord
messagebox WORD TITLE

end

:GetWord
;文字列の長さを
strlen STRING
LEN_ALL = result

;文字列から最初のカンマの位置
strscan STRING ','

;カンマが見つからない場合は区切らない
if result = 0 then
WORD = STRING
else
;カンマ区切り1ワード目の最後の位置
LEN_WORD  = result - 1

;カンマ区切り2ワード目以降の長さ
LEN_REST = LEN_ALL - result

;カンマ区切り2ワード目以降の最初の位置
HEAD_POS = result + 1

;カンマ区切り1ワード目を変数"WORD"に格納
strcopy STRING 1 LEN_WORD WORD

;カンマ区切り2ワード目以降を変数"STRING"に格納
strcopy STRING HEAD_POS LEN_REST STRING
endif
return


参考までに、"strsplit"コマンドを使うとここまでシンプルになります。

サンプルソース2

;分割対象の文字列
TITLE = 'VISAといえば'
STRING = '三井,住友,VISAカード'

call GetWord
messagebox WORD TITLE

call GetWord
messagebox WORD TITLE

call GetWord
messagebox WORD TITLE

end

:GetWord
;1つ目のカンマで分割
strsplit STRING ',' 2
WORD = groupmatchstr1
STRING = groupmatchstr2
return


SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser
Comments