桁数による数字の置き換えNo.06900
k-yosi さん 12/04/24 12:55
 
インデザインを使ってページレイアウトをしています。
秀丸でテキストの前処理をしているのですが、置き換え処理に不明点があり投稿しま
した。

質問は文章中の数字の処理についてです。一桁の数字は全角にして、二桁以上は半角
数字に置き換えることは可能でしょうか?

よろしくお願いします。

[ ]
RE:06900 桁数による数字の置き換えNo.06901
Iranoan さん 12/04/24 13:16
 
 k-yosi さん今日は、Iranoan です。
> 一桁の数字は全角にして、二桁以上は半角
> 数字に置き換えることは可能でしょうか?
 次の要領でできます。
//------------------------------------------------------------
setcompatiblemode 0x20F;
call SaveSearch;
begingroupundo;
disabledraw;
//処理のメインはここから
selectall;
filter "HanZenConv.hmf" , "HanZenConv" , "0001000";//取り敢えず数字は全部半角に
escape;
gofiletop;
searchdown "(?<![0-9])[0-9](?![0-9])", regular;
while( result ){
  tozenkakuhira;
  escape;
  finddown;
}
//ここまで
endgroupundo;
call ResetSearch;
endmacro;

SaveSearch://検索状態を保持
  $s = searchbuffer;
  #s = searchoption;
  #s2 = searchoption2;
  $h = foundbuffer;
  #h = foundoption;
  #f = foundhilighting;
  $r = replacebuffer;
  return;

ResetSearch://検索を初期状態に戻す
  setreplace $r;
  setsearch $h, #h;
  hilightfound #f;
  setsearch $s, #s, #s2;
  return;

[ ]
RE:06901 桁数による数字の置き換えNo.06902
k-yosi さん 12/04/24 17:03
 
ご返事ありがとうございます。

当方はマクロについては全くの素人で、現在秀丸のガイドブックを購入し勉強中の身
です。
少々時間をもらって教えていただいたマクロを研究してみたいと思います。

[ ]
RE:06902 桁数による数字の置き換えNo.06903
秀まるお2 さん 12/04/25 08:40
 
 Iranoanさんのマクロを理解するのはかなり難しいような気がするので、ここ
は1つ別の方うとして、秀丸エディタの最新β版の方で追加した、正規表現置換
での変換モジュールを通す方法を紹介させていただきます。

 秀丸エディタのVersion 8.20β(いわゆるβ版)の方だと、正規表現の置換の
時に、変換モジュールを通すことが出来ます。これを使うともっとシンプルに出
来ます。

 一桁の数字(全角/半角問わず)にヒットさせる正規表現は、

    (?<![0-90-9])[0-90-9]{1}(?![0-90-9])

 で、2桁以上だと、

    (?<![0-90-9])[0-90-9]{2,}(?![0-90-9])

 になります。

 1桁を全角にするなら、

 検索:  (?<![0-90-9])[0-90-9]{1}(?![0-90-9])
 置換:  \(0,ToZenkakuHira)
 正規表現:ON

 で置換出来ます。

 2桁以上を半角にする方は、

 検索:  (?<![0-90-9])[0-90-9]{2,}(?![0-90-9])
 置換:  \(0,ToHankaku)
 正規表現:ON

 です。

 マクロで書くと、例えば

    replaceallfast "(?<![0-90-9])[0-90-9]{1}(?![0-90-9])"
                 , "\\(0,ToZenkakuHira)"
                 , regular;
    replaceallfast "(?<![0-90-9])[0-90-9]{2,}(?![0-90-9])"
                 , "\\(0,ToHankaku)"
                 , regular;

 とか、そんな感じになります。

[ ]
RE:06903 桁数による数字の置き換えNo.06924
k-yosi さん 12/05/01 12:54
 
ありがとうございます。
対処法がわからず困っていました。
もう一度試してみたいと思います。

[ ]