本サイトはプロモーションを含みます。

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は groupmatchstr1〜groupmatchstr9 を指定したセパレーターで連結します。次のマクロは空文字(”)でgroupmatchstr1とgroupmatchstr2を連結し、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オプションを使う

messageboxやyesnoboxのspecialオプションを使う事により、改行やタブを思い通りに表示させる事ができます。このオプションは、messageboxコマンドの最後のパラメータとして、0以外の値を指定します。ただし、この方法はTeraTermマクロでは推奨されておらず、代わりにstrepecialコマンドの使用が推奨されています。

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

文字列を比較する

文字列の比較は「文字列が一致するか調べる」を参照してください。

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

CSVファイルのようなカンマ区切りのフィールドを分割して処理する方法は「CSVファイルを使ってTeraTermマクロにパラメータを渡す」を参照してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)