見出し画像

Tera Termマクロ文字列処理についてのまとめ

TeraTermマクロでは文字列処理を頻繁に使います。そこで、Tera Termマクロによる文字列処理に焦点あてて解説します。


文字列の長さを調べる

文字列の長さは strlen で調べます。結果はシステム変数 result へ格納されます。

line = 'abc'
strlen line

上記のマクロを実行すると、システム変数 result には「3」が格納されます。strlenはバイト単位で長さを返すので、日本語のような2バイト文字では注意が必要です。

line = 'あ'
strlen line

上記のマクロを実行すると、システム変数 result には「2」が格納されます。

文字列連結

strconcat

文字列の連結は strconcat を使います。

line1 = 'abc'
line2 = 'def'

strconcat line1 line2

上記のマクロを実行すると、line1の内容が abc から abcdef に変わります。

sprintf

別の方法では sprintf(sprintf2) も使えます。

line1 = 'abc'
line2 = 'def'

sprintf '%s%s' line1 line2

strinsert

変わった方法としては、strinsertを使う方法です。strinsert は、ある文字列に別の文字列を挿入します。次のマクロは、line1の長さを調べてline1の末尾にline2を挿入しています。

line1 = 'abc'
line2 = 'def'

strlen line1
index = result + 1
strinsert line1 index line2

strjoin

更に変わった方法としては、strjoinを使う方法です。strjoinは groupmatchstr1groupmatchstr9 を指定した文字で連結します。次のマクロは空文字('')でgroupmatchstr1groupmatchstr2を連結し、lineに連結した文字列を格納します。

groupmatchstr1 = 'abc'
groupmatchstr2 = 'def'
strjoin line ''

大文字小文字を変換する

tolower

文字列を小文字に変換するためには tolower を使います。次のマクロを実行すると、line1の文字列 AbCdEfg が abcdefg に変わり、line2に格納されます。

line1 = 'AbCdEfg'
tolower line2 line1

toupper

文字列を大文字に変換するには toupper を使います。次のマクロを実行すると、line1の文字列 AbCdEfg が ABCDEFG に変わり、line2に格納されます。

line1 = 'AbCdEfg'
toupper line2 line1

messageboxやyesnoboxで改行やタブを使う

'¥n'や'¥t'はそのままでは表示させることができません。次のマクロを実行すると'¥n'が改行されず、そのまま表示されてしまいます。

lines = 'abc¥ndef¥nghi'
messagebox lines '改行されるかな?'


解決する方法はふたつあります。

strspecial

文字列の'¥n'や'¥t'を思い通りに表示させるためには、strspecialで文字列を変換します。次のマクロを実行すると'¥n'が改行コードとして認識されます。

lines = 'abc¥ndef¥nghi'
strspecial lines
messagebox lines '改行されるかな?'

specialオプションを使う

messageboxyesnoboxspecialオプションを使うことにより、改行やタブを思い通りに表示できます。このオプションはmessageboxコマンドの最後のパラメータとして「0」以外の値を指定します。

ただし、この方法はTeraTermマクロでは推奨されておらず、代わりにstrepecialコマンドの使用が推奨されています。

lines = 'abc¥ndef¥nghi'
messagebox lines '改行されるかな?' 1

文字列を比較する

文字列の比較は次の記事をご覧ください。

カンマ区切りのフィールドを分割する

CSVファイルのようなカンマ区切りのフィールドを分割して処理する方法は次の記事をご覧ください。

この記事が気に入ったらサポートをしてみませんか?