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マクロにパラメータを渡す」を参照してください。