特定文字列検索と挿入
・"if" 文字列を見つけてすぐ後ろにスペースを挿入してくマクロ
・"if" "(" ")" の スペースチェック&スペース挿入マクロ
・"if" 文字列を見つけてすぐ後ろにスペースを挿入してくマクロ
ifの後ろにスペースが入っているかのチェック処理
下記は "if"という文字列の後にスペースが入っているかをチェックする
マクロです。まず@byteにはファイル先頭からという意味で先頭の番号1を設定します。次にwhile分で文字を読み取っていく処理を「while」にてループ記述を書きます。whileは下手すると無限ループになってしまいMIFESがなにも受け付けなくなるので要注意です。今回は@limitという変数を設けて無限にならないように処理をいれています。
文字列の検索はsearch関数を使い特定の文字列を見つけることができます。特定の文字列が見つかると、search関数の返り値で見つかった文字数
(取得できた文字数) を受け取ります。ここでは文字数が0以下であった場合(みつからなかったと判定)はbreakで終了します。
"if"という文字列が見つかったらすぐ後ろの文字を見に行ってそのコードが' '(スペース)でなかった場合はinsstr()を使ってスペースを挿入しています。
ファイル if_space_chk.mcr
*if_space_chk スペースチェック
@byte = 1 ;先頭から
while(@code != 0xffff)
@5 = search(0, 0, "if") ;
if(@5 <= 0) ;検索できたかどうか
break
else
@byte += 2;
if( @code != ' ' )
insstr("\s")
endif
endif
if(@code == 0xffff)
break;
endif
if(@limit >= 10000)
break;
endif
@limit +=1
wend
exit() ;マクロの終了
|
「if」「(」「)」の スペースチェック
"if"という文字列と"(" ")"という文字列の前後にスペースが入っているかチェックしてスペースがなければスペースを挿入するマクロです。
・if の後のスペースをチェック
・( の後のスペースをチェック
・) の後のスペースをチェック
スペースがなければスペースを挿入
ファイル if_sp_chk.mcr
*aaspace_chk スペースチェック
@byte = 1 ;先頭から
while(@code != 0xffff)
@5 = search(0, 0, "if") ;
if(@5 <= 0) ;検索できたかどうか
break
else
@byte += 2;
if( @code != ' ' )
insstr("\s")
endif
endif
if(@code == 0xffff)
break;
endif
if(@limit >= 10000)
break;
endif
@limit +=1
wend
@byte = 1 ; ファイル先頭から
while(@code != 0xffff)
@5 = search(0, 0, "(") ;
if(@5 <= 0) ;検索できたかどうか
break
else
@byte += 1 ;
if( @code != ' ' )
insstr("\s")
endif
endif
if(@code == 0xffff)
break;
endif
if(@limit >= 10000)
break;
endif
@limit +=1
wend
@byte = 1 ; ファイル先頭から
while(@code != 0xffff)
@5 = search(0, 0, ")") ;
if(@5 <= 0) ;検索できたかどうか
break
else
if( @code != ' ' )
insstr("\s")
endif
@byte += 1 ;
endif
if(@code == 0xffff)
break;
endif
if(@limit >= 10000)
break;
endif
@limit +=1
wend
exit() ;マクロの終了
|
|
|
リンク
|