Replace関数を作ってみた


VBAのReplace関数みたいなのを作ってみた。

    $buf = "tanaka suzuki yamada sato";
    call Replace $buf, " ", "\n";
    message $$return;
    endmacro;

Replace:
    ##a = hidemaruhandle(0);
    openfile "/h";
    ##b = hidemaruhandle(0);
    insert $$1;
    replaceallfast $$2, $$3;
    selectall;
    $$buf = gettext(seltopx,seltopy,selendx,selendy);
    setactivehidemaru ##a;
    closehidemaruforced ##b;
    return $$buf;

VBAのReplace関数の特徴は、検索語をすべて置換するということ。てことは、元の文字列を1文字ずつチェックするより、秀丸の置換機能を使うのが最も簡単だろうと。なので、ステルスで新規ファイルを開き、元の文字列をそこに挿入し、一括置換した。

ずいぶん前にも、ステルスで開いたファイルの操作で悩んだことがあったけど、今回もちょっと苦労した。新規ファイルを保存しないで閉じたいのだけど、なんかうまくいかなかった。結果的に、以前のメモを見て、上記のようにしたらうまくいった。

上記のように改行コード(\n)も、普通の文字として置換できた。おそらく、タブ(\t)とかでもいけるんだろうな。秀丸の置換機能を使っているのだから、複数文字列にも対応できるだろう。テストしてないけど。