カンマ直前の空白を削除するマクロNo.07160
あつし さん 12/11/07 09:28
 
お世話になります。

カンマ直前の空白(とタブ)を削除するマクロ、
何処かにないでしょうか?
------------------------------
@ret1 = sub_calc($p1 , $p2 , $p3);
Aret2 = sub_edit($p1,$p2,   $p3);
Bret3 = sub_exec(
           $name   ,
           $address,
           $ido    ,
           $keido  ,
         );
------------------------------
上の8行を選択して、
------------------------------
@ret1 = sub_calc($p1, $p2, $p3);
Aret2 = sub_edit($p1,$p2,   $p3);
Bret3 = sub_exec(
             $name,
             $address,
             $ido,
             $keido,
         );
------------------------------
のようになるマクロです。
Aは、sub_edit(p1, p2, p3); が理想ですが、
そこまでは望んでいません。

私はプログラミング上、変数の後のカンマは
空白無しにしたい。カンマの後に空白1つ。

別の場所からコピーしたときに、カンマの前に
空白が入ることが多く、これを削除したい。
後ろはさほど気にならないが、空白1つが理想。
このように思っている人は多いのではないかと。

Bの場合はカンマを縦一列に綺麗に並べてあるほうが
良いですが、時と場合により空白を削除したいときも
あります。
この操作を頻繁に行うので、是非マクロが欲しいのですが、どうも
マクロの作成が苦手です。

[ ]
RE:07160 カンマ直前の空白を削除するマクNo.07161
秀まるお2 さん 12/11/07 15:43
 
 正規表現の置換で、

 検索(S): [ ]+,
 置換(E): ,

 で置換するだけでもOKそうな気がします。それではダメでしょうか。

> Aは、sub_edit(p1, p2, p3); が理想ですが、
> そこまでは望んでいません。

 ちょっと正規表現がややこしいですが、

 検索(S): ,(|[ ]{2,})(?=[^,\n ])
 置換(E): ,
  (置換文字列はコンマ+半角空白1つ)

 の置換もすればいけそうな気がします。

 今ちょっと簡単にテストしただけなので、うまくいかないケースがもしあった
らすみません。

[ ]
RE:07161 カンマ直前の空白を削除するマクNo.07162
あつし さん 12/11/08 10:20
 
担当者 様

ご回答、有り難う御座います。

> 正規表現の置換で、
> 検索(S): [ ]+,
> 置換(E): ,

確かに、これで十分ですね。
対象行を選択して、上記を実行するマクロ、だけなんですが、
私は秀丸マクロを作成するのが苦手なので、既に有ったらと思い
投稿させて頂きました。
無いようなら自分で作成します。


[ ]
RE:07162 カンマ直前の空白を削除するマクNo.07163
秀まるお2 さん 12/11/08 10:28
 
 範囲選択してから実行する用のマクロでしたら、

    setcompatiblemode 0x20000;
    replaceallfast "[ ]+," , "," , regular, inselect;

 でいけると思います。

[ ]
RE:07163 カンマ直前の空白を削除するマクNo.07164
あつし さん 12/11/09 14:58
 
有り難う御座います。
行けました!
こんなに簡単にできるとは。...φ(._.

選択状態の保管やカーソル位置のことなど、
あれこれ考えていました。
質問して良かったです。



[ ]
RE:07164 カンマ直前の空白を削除するマクNo.07165
あつし さん 12/11/09 15:08
 
細かいことですが、
マクロ実行の直後、一瞬
「全置換処理中」の小さなウィンドウが出ますが、
これを出なくできますか?

[ ]
RE:07165 カンマ直前の空白を削除するマクNo.07166
秀まるお2 さん 12/11/09 21:26
 
 「全置換処理中」のウィンドウを出さないのは、基本出来ないです。

 しいてやるとしたら、replacedownしてからfinddownを繰り返すようなマクロ
にする手はありますが、そうすると置換がものすごく遅くなります。

    setcompatiblemode 0x20000;
    disabledraw;
    replacedown "[ ]+," , "," , regular, inselect;
    if( result ) {
        while(1) {
            finddown;
            if( !result ) {
                break;
            }
        }
    }
    enabledraw;

[ ]
RE:07166 カンマ直前の空白を削除するマクNo.07167
あつし さん 12/11/12 17:02
 
> 「全置換処理中」のウィンドウを出さないのは、基本出来ないです。

了解です。
「基本出来ない」であれば、それで結構です。
出来るのに、やらないでおくのが嫌なだけですので。

今後とも秀丸を利用させて頂きます。



[ ]