置換についてNo.01126
MOURI さん 98/05/29 08:19
 
 (文字列)を[文字列]に置換したいのですが、方法がわかりません。文字列はABCや1
23などで、(?)を発見したら[?]に置換したいのです。このような事がいろいろ出来る
マクロなどありましたら、教えてください。宜しくお願いいたします。

[ ]
RE:01126 置換についてNo.01128
番頭++ さん 98/05/29 15:43
 
> (文字列)を[文字列]に置換したいのですが、方法がわかりません。文字列はABCや1
>23などで、(?)を発見したら[?]に置換したいのです。このような事がいろいろ出来る
>マクロなどありましたら、教えてください。宜しくお願いいたします。

まず、このコメントを「秀丸エディタ」に貼り付けてください。

「動作環境」の「ユーザインターフェイス」の「検索での表示」を「選択する」
にして、これらのテストを実行してみてください。後で元に戻してください ...
必ず戻してくださいね ...

そして「検索」で「正規表現」を指定して、

\((\n|[^\(\)])*\)|\(\) と言う文字列を検索してください。空白は不要です。
その後、下候補、上候補、をテストしてください。

テストデータです。
 () は必要ですか ???
 aaa (aaa) は簡単です。
 (aaa) (bbb) もいけますが。
 (aaa(aa)vv) はだめでしょう。
 (a(b) ???
)a(a) ???
(
) あるかな !!!
 (aaa
bbb) ここまではいけますが !
 (aaa
bbb これは、ダメでしょう
ccc)


//  okikaekko1.mac
//R $str_find = "\\((\\n|[^\\(\\)])*\\)|\\(\\)";    //  検索 (?) () 要です。
$str_find = "\\((\\n|[^\\(\\)])*\\)";   //  検索 (?)  () 不要です。
searchdown $str_find, regular;
if( ! result ){ endmacro;   }
menu "(?) ==> [?] 置き換えますか ? - (&Y) Yes です !",
    "(&N) No とんでもない !";
if( result != 1 ){  right;  escape; endmacro;   }
#x_s = seltopx; #y_s = seltopy; #x_e = selendx; #y_e = selendy;
escape;
delete; //  (
insert "[";
moveto #x_e - 1,#y_e;
delete; //  )
insertfix "]";
endmacro;
// end of macro.

完璧なマクロではありませんが、
参考になりますれば、幸いです ...


[Power On]
余談ですが、==> 秀丸担当 様
if( ! result ){ endmacro:   }   //  ; ==> [Ctrl] + [Alt] + [Delete]
が必要ですね、たった今、始めて知りました !!!

[ ]
RE:01128 置換についてNo.01129
番頭++ さん 98/05/29 17:46
 
inselect は論理行の(完全な)範囲選択を前提とした仕様で作成されている模様
ですから、論理行の(完全な)範囲選択をしてこのマクロはテストしてください。

//kkani.mac ( ==> [ と ) ==> ]
if( ! selecting ){ endmacro; }
#x_s = seltopx; #y_s = seltopy; #x_e = selendx; #y_e = selendy;
replaceallfast "(", "[", inselect;
moveto #x_s, #y_s;beginsel;moveto #x_e, #y_e;
replaceallfast ")", "]", inselect;
endmacro;

こちらがお勧めです。

[ ]
RE:01128 置換についてNo.01131
MOURI さん 98/05/30 11:14
 
>完璧なマクロではありませんが、
>参考になりますれば、幸いです。

とても参考になりました。
こちらを少し手直しして、使いたいと思います。

[ ]