マクロは陰で使うもの。生産性を上げても給料は上がらず仕事が増えるだけなので仕事をサボろう!

文字列の一部を置換する方法【strreplace】- Tera Term マクロ

目次

動作確認環境

  • Tera Term Version 4.108

文字列の一部置換は「strreplace」コマンドで可能

Tera Term マクロで文字列の一部(部分文字列)を置換するためには strreplace コマンドを使用します。

strreplace の使い方
  • strreplace <元の文字列> <検索開始位置> <置換対象正規表現> <置換後文字列>
補足
  • <元の文字列>:部分文字列を置換する対象の文字列
  • <検索開始位置>:対象文字列の何文字目から置換対象の部分文字列を検索するかを数値で指定
    • 対象文字列に全角文字を含む場合、事前に regexoption コマンドで適切なエンコーディングの設定が必要
    • 半角文字の場合は regexoption を設定せずとも文字数と指定した数値が一致する
  • <置換対象正規表現>:置換対象の部分文字列を正規表現で指定する
  • <置換後文字列>:指定した正規表現に一致した部分文字列をこの文字列に置換する
  • 指定した置換対象正規表現に一致する部分文字列が複数存在する場合、最初に一致した部分文字列1か所のみが置換される
  • コマンド結果に応じてシステム変数 result に数値が格納される
    • 置換に成功 ⇒ result ← 1
    • 置換対象文字列が無かった場合 ⇒ result ← 0
    • 正規表現のエラー ⇒ result ← -1
  • 置換が行われた場合、正規表現にマッチした文字列がシステム変数 matchstr に格納される

例えば、「abcabcabcabc」という文字列について部分文字列「abc」を「xxx」に置換することを考えます。

string = 'abcabcabcabc'
strreplace string 1 'abc' 'xxx'
messagebox string 'string'

上のマクロでは strreplace の検索開始位置を「1」にしているため、1-3 文字目の「abc」がマッチし「xxx」に置換されます。

  • abcabcabcabc → xxxabcabcabc

次に以下のように検索開始位置を「2」に変更します。

string = 'abcabcabcabc'
strreplace string 2 'abc' 'xxx'
messagebox string 'string'

このマクロでは2文字目から検索が開始されるため、4-6 文字目の「abc」がマッチし「xxx」に置換されます。

  • abcabcabcabc → abcxxxabcabc

置換後文字列を空文字列にすると部分文字列の削除ができる

strreplace コマンドの置換後文字列の指定を空文字列「''」または「""」にすると部分文字列を削除できます。

例えば、システム変数 param1 からマクロファイル名を取得し、マクロファイル名から拡張子「.ttl」を削除したい場合、以下のようなマクロで実現できます。

string = param1
strreplace string 1 '\.ttl$' ''
messagebox string 'string'

上のマクロのファイル名が「sample.ttl」の場合、変数 string の値は strreplace 後には以下のようにファイル名から拡張子が削除された文字列になります。

  • sample.ttl → sample

まとめ

CHECK!
  • 文字列の一部を置換するためには strreplace コマンドを使用する
  • 置換後文字列を空文字列にすることで、文字列の一部を削除することができる

Tera Term マクロ関連記事リスト


Amazon で買えるおすすめアイテム(アフィリエイト)

ブログ始めるなら 【アフィリエイトリンク】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

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

目次