strscan

【Tera Term マクロ言語】コマンドリファレンス

strscan 機能

[文字列操作コマンド]

部分文字列の位置を返します。

コマンドライン

strscan <string> <substring>

機能説明

文字列 <string> の中に、部分文字列 <substring> が含まれているかどうか調べます。

もし、<substring> が見つかった場合、最初に見つけたその位置(1オリジン)がシステム変数 <result> に格納されます。
<substring> が見つからなかった場合、<result> に0が格納されます。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<string>文字列文字列を指定します。
<substring>文字列<string> から検索する文字列を指定します。

対象バージョン

全てのバージョンで利用可能です。

戻り値

戻り値として以下の変数が定義されます。
変数名意味
result0検索に失敗した
n最初に見つけた位置

関連コマンド

関連コマンドはありません。

使用方法

使用例

・文字の位置を探して int2str に渡す場合
strscan 'tera term' 'term'
; result の値は6
int2str valstr result
messagebox valstr 'result'
・16進文字列を16進および2進へ変換するする場合
; 16進文字列を16進および2進へ変換する
basenum='0060E3da'
base=16
call base2dec
int2str sdec decnum
messagebox sdec 'decnum'
base=2
call dec2base
messagebox basenum 'basenum'
end

:dec2base
basenum=''
tmp=decnum      ;modified so not destructive of decnum
while tmp > 0
   strcopy '0123456789ABCDEF' (tmp%base)+1 1 basedig
   strconcat basedig basenum
   basenum=basedig
   tmp=tmp/base
endwhile
return

:base2dec
decnum=0
strlen basenum
len=result
for i 1 len
   strcopy basenum i 1 basedig
   decnum=decnum*base
   strscan '0123456789ABCDEFabcdef' basedig
   if result>16 result=result-6      ;take care of lower case
   decnum=decnum+result-1
next
return
・IPアドレスのネットワークアドレスとサブネットマスクを求める場合
; IPアドレスのネットワークアドレスとサブネットマスクを求める
ip='192.168.1.189'
sn='255.255.255.248'
bits=0          ;calculate bits & first address in sn
bitstr='000 128 192 224 240 248 252 254 255'    ;lookup table for # bits
do
    str2int isn sn
    int2str stmp isn
    strscan bitstr stmp     ;use lookup table to find bits
    bits=bits+(result-1)/4
    str2int tmp ip      ;find net by bitwise AND of ip and mask
    sprintf2 net '%s%d' net tmp&isn
    strscan sn '.'
    strcopy sn result+1 999 sn
    strscan ip '.'
    strcopy ip result+1 999 ip
    if result>0 strconcat net '.'
loop while result>0
messagebox bits 'bits'
messagebox net 'net'

サンプル

以下のサンプルが存在します。

備考

特にありません。