strscan
2021/05/15 20:16
strscan 機能
[文字列操作コマンド]部分文字列の位置を返します。
コマンドライン
strscan <string> <substring>
機能説明
文字列 <string> の中に、部分文字列 <substring> が含まれているかどうか調べます。もし、<substring> が見つかった場合、最初に見つけたその位置(1オリジン)がシステム変数 <result> に格納されます。
<substring> が見つからなかった場合、<result> に0が格納されます。
パラメータの説明
指定するパラメータは以下の通りです。パラメータ | 型 | パラメータ説明 |
---|---|---|
<string> | 文字列 | 文字列を指定します。 |
<substring> | 文字列 | <string> から検索する文字列を指定します。 |
対象バージョン
全てのバージョンで利用可能です。戻り値
戻り値として以下の変数が定義されます。変数名 | 値 | 意味 |
---|---|---|
result | 0 | 検索に失敗した |
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'