目次
動作確認環境
- 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 コマンドを使用する
- 置換後文字列を空文字列にすることで、文字列の一部を削除することができる
- 基礎知識
- コマンド解説
- ログイン
- コマンド実行
- ログ保存
- ファイル・フォルダ操作
- 文字列操作
- 変数関連
- マクロのモジュール化
- テクニック
- サブルーチン
- オリジナルマクロ
【整備済み品】HP ノートパソコン 830G5/13.3型フルHD/Win 11/MS Office H&B 2019/第7世代i5-7200U 2.50GHz/メモリ 16GB/SSD 512GB/指紋リーダー/USB 3.0/WEBカメラ/初期設定済
コメント