置換について
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
>完璧なマクロではありませんが、
>参考になりますれば、幸いです。
とても参考になりました。
こちらを少し手直しして、使いたいと思います。
[
△
]