|
もしamだけだとしたら、マクロを使わなくても正規表現を使った置換でできるの
ですが、pmの計算をするということになると、マクロを使わないとできなさそう
です。
試しに、あまり効率は良くないかもしれないですが、作ってみました。
もし会議室の投稿の都合上、行の途中に改行が入ってしまっているようでしたら、
編集して繋げていただけたらできると思います。
---------------------------
disabledraw;
$s=searchbuffer;
$r=replacebuffer;
#f=searchoption;
gofiletop;
$search="([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),([0-9][0-9]?):
([0-9][0-9]?)(am|pm)";
$searchAmpm="([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),([0-9][0-
9]?):([0-9][0-9]?)(am|pm)(?\\6)";
$searchHour="([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),([0-9][0-
9]?):([0-9][0-9]?)(am|pm)(?\\4)";
$searchMin="([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),([0-9][0-
9]?):([0-9][0-9]?)(am|pm)(?\\5)";
while(1){
searchdown2 $search, regular;
if( result == false ) break;
#xHit=foundtopx;
#yHit=foundtopy;
moveto #xHit,#yHit;
searchdown2 $searchAmpm, regular;
$ampm=gettext(foundtopx,foundtopy,foundendx,foundendy);
if( $ampm == "am" ) {
moveto #xHit,#yHit;
replacedown $search,"\\1/\\2/\\3 \\4:\\5", regular;
} else if( $ampm == "pm" ) {
moveto #xHit,#yHit;
searchdown2 $searchHour, regular;
$hour=gettext(foundtopx,foundtopy,foundendx,foundendy);
moveto #xHit,#yHit;
searchdown2 $searchMin, regular;
$min=gettext(foundtopx,foundtopy,foundendx,foundendy);
moveto #xHit,#yHit;
replacedown $search,"\\1/\\2/\\3 ", regular;
insert str(val($hour)+12)+":"+$min;
}
}
setsearch $s,#f;
setreplace $r;
endmacro;
---------------------------
あるいは、pmの部分は力ずくで以下のようにしてしまったほうが手っ取り早いか
もしれません。
次にこういうことが必要になった場合でも、複雑なマクロを考える必要が無いの
で比較的楽に作ることができるのではないかと思います。
amの場合は、正規表現で、タグ付き正規表現の置換ででき、pmもその応用でして
しまうと効率は悪いですが作るのが楽かもしれません。
正規表現とタグ付き正規表現については、秀丸エディタのヘルプの、
目次− 検索系コマンド− 正規表現−一般的正規表現互換のタグ付き正規表現
のページを参照していただけると分かりやすいかもしれません。
---------------------------
disabledraw;
$s=searchbuffer;
$r=replacebuffer;
#f=searchoption;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),([0-9][0-
9]?):([0-9][0-9]?)am", "\\1/\\2/\\3 \\4:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?0):([0
-9][0-9]?)pm", "\\1/\\2/\\3 12:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?1):([0
-9][0-9]?)pm", "\\1/\\2/\\3 13:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?2):([0
-9][0-9]?)pm", "\\1/\\2/\\3 14:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?3):([0
-9][0-9]?)pm", "\\1/\\2/\\3 15:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?4):([0
-9][0-9]?)pm", "\\1/\\2/\\3 16:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?5):([0
-9][0-9]?)pm", "\\1/\\2/\\3 17:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?6):([0
-9][0-9]?)pm", "\\1/\\2/\\3 18:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?7):([0
-9][0-9]?)pm", "\\1/\\2/\\3 19:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?8):([0
-9][0-9]?)pm", "\\1/\\2/\\3 20:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(0?9):([0
-9][0-9]?)pm", "\\1/\\2/\\3 21:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(10):([0-
9][0-9]?)pm", "\\1/\\2/\\3 22:\\5", regular;
replaceallfast "([0-9][0-9][0-9][0-9]),([0-9][0-9]?),([0-9][0-9]?),(11):([0-
9][0-9]?)pm", "\\1/\\2/\\3 23:\\5", regular;
setsearch $s,#f;
setreplace $r;
endmacro;
|
|