ゆふNo.21236
ゆふ さん 06/05/07 16:39
 
はじめまして。秀丸の初心者です、どうしたらいいのか分からなく困っています宜し
くお願い致します。

文章の編集系のマクロについてですが、数字で一桁と二桁は半角で三桁以上を全角に
統一したいのですが、0ー9の数字を全角に統一置換は出来ますが、一桁と二桁のみ
を半角にというマクロがどうしても分かりません。

宜しくお願い致します。

[ ]
RE:21236 ゆふNo.21238
ENCODINGSHIFTJIS さん 06/05/07 21:02
 
おー、正規表現パズルですね、ちょっと否定を含んでいる

[0-9]+
を当てて、
マッチ文字数を知って、変換するのが簡単です。
マクロ記録では判断をする部分はできません

[ ]
RE:21236 ゆふNo.21239
山紫水明 さん 06/05/07 21:16
 
 ゆふさん,こんばんは。

>0ー9の数字を全角に統一置換は出来ますが、一桁と二桁のみ
>を半角にというマクロがどうしても分かりません。

 いったんすべて半角に統一し,その後で必要な全角変換をしたらどうでしょう。

//-----------------------------------------//
disabledraw;
gofiletop;
while( 1 ) {
    searchdown2 "[0-9]+", regular;
    if( !result ) break;
    beginsel;
    moveto foundendx, foundendy;
    tohankaku;
    escape;
}
gofiletop;
while( 1 ) {
    searchdown2 "[0-9]{3,}", regular;
    if( !result ) break;
    beginsel;
    moveto foundendx, foundendy;
    tozenkakuhira;
    escape;
}
endmacro;
//-----------------------------------------//

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:21238 ゆふNo.21241
ENCODINGSHIFTJIS さん 06/05/07 21:47
 
// 繰り返さない1回分
searchdown "[0-9]",regular;// 頭出し
if(!result) endmacro;
beginsel;
searchdown "[^0-9]",regular;// 範囲選択
if(4 >= (selendx-seltopx)) {// 桁数検査(バイト数)
filter "" , "ToHankakuAlnum";
}

[ ]
RE:21236 ゆふNo.21242
白雲斎 さん 06/05/07 22:20
 
こんにちは ゆふ さん、白雲斎です。

直前、直後の否定形を用いれば出来ますよ。

>一桁と二桁は半角で三桁以上を全角
私の近隣では、一桁が全角、複数桁が半角なんですけど、反対ですね。


disabledraw;
// 一桁と二桁を半角
gofiletop;
searchdown2 "(?<![0-9])[0-9]{1,2}(?![0-9])", regular;
while( result )
{
    tohankaku;
    escape;
    finddown;
}
// 三桁以上を全角
gofiletop;
searchdown2 "[0-9]{3,}", regular;
while( result )
{
    tozenkakuhira;
    escape;
    finddown;
}
enabledraw;
endmacro;

[ ]
RE:21242 ゆふNo.21243
ゆふ さん 06/05/07 23:15
 
こんばんは。みなさん早い返信ありがとうございます!!

早速みなさんのマクロを明日会社に行って実行したいと思います。

取り急ぎですが、本当にありがとうございました。

[ ]