replacedownに関してNo.37005
SunSolaris さん 18/12/31 07:31
 
 プログラミング初心者のSun Solarisと申します宜しく御願いいたします。

(実行するファイル内容)
1 2黒 4 ○○△△○△ ▲3 54.0 ○△ □△ 1:56.2  
4 5 5 3
38.4 462(0) ○△ □ 1
2 1白 1 ○○△△○△ ▲3 54.0 ○○ □△ 1:56.3 1/2
1 1 1 1
38.9 458(+8) ○○ □□ 5
3 7橙 14 ○○□□○○ ▲3 54.0 ○△ ○□ 1:56.3 クビ
15 15 11 12
37.6 446(+10) ○○△△○△ 3
4 3赤 6 ○○ △△ ▲3 53.0 ○○ □△ 1:56.4 3/4
12 11 15 14
37.8 476(-2) ○○ □□ 13
5 3赤 5 ○○△△○△ ▲3 54.0 ○○ □△ 1:56.6 1
5 3 3 3
38.9 462(+4) ○○ □□ 6
6 6緑 11 ○○△△○△ ▲3 54.0 ○○ □△ 1:56.8 1 1/4
11 12 11 11
38.3 438(-12) ○○ □□ 8
7 4青 8 ○○△△○△ ▲3 54.0 ○○ □△ 1:56.8 クビ
6 6 7 7
38.8 464(-2) ○○ □□ 7
8 2黒 3 ○○△△○△ ▲3 54.0 ○○ □△ 1:56.9 クビ
8 6 7 7
38.9 442(+4) 木原 一良 11
9 1白 2 ○○△△○△ ▲3 54.0 ○○ □△ 1:57.3 2 1/2
2 2 2 2
39.8 474(0) 木原 一良 2

実行ファイルには最大で"1\x09"は1〜18です。

 上記の(実行ファイル内容の中で"1 "〜"18 "迄を削除しようと、下記の(マクロ実
行内容其の1)と(マクロ実行内容其の2)を実行した時削除出来る数字水平タブと削除
できない数字水平タブ出てきてしまうのですが?
 全角/半角の問題でないと思うのですが前処理で下記の(前処理マクロ内容)を実行
後に記述しています。

(前処理マクロ内容)
 selectall;  
//すべてを選択
 filter "HanZenConv.hmf64" , "HanZenConv" , "0111100";  
//半角/全角変更



(マクロ実行内容其の1)

movetolineno 1,1; //任意の位置へのカーソル移動(桁番号、行番号)
 searchdown "1\x09"; //文字列"1水平タブ"検索
 if(result == true){
   movetolineno 1,1; //任意の位置へのカーソル移動(桁番号、行番号)
   beginsel;  //範囲選択開始(2着)
   right 2;  //カーソル右移動(移動数
   delete;
    }
  else{
   right; //カーソルを右に移動します
    }


(マクロ実行内容其の2)

movetolineno 1,31; //任意の位置へのカーソル移動(桁番号、行番号)
 searchdown "11\x09"; //文字列"11水平タブ"検索
 if(result == yes){
   movetolineno 1,31; //任意の位置へのカーソル移動(桁番号、行番号)
   replacedown "11\x09" , "" , regular, nohilight;
    }
  else{
   right; //カーソルを右に移動します
    }

 長文になり大変申し訳有りませんが御教授を御願い致します。

[ ]
RE:37005 replacedownに関してNo.37006
ヒラメ さん 18/12/31 14:32
 
Sun Solarisさんこんにちは。

恐らく▲記号がある行の行頭にある数字+空白を除去したいのかなと思いますので、
下記の通りマクロを書いてみました。
(例によってテストできていませんので、もし動かないようでしたらすみませ
ん・・・。お知らせいただければ可能な限り修正します。)

もしご自身でマクロを作成する場合の参考として、
・まず手作業で秀丸エディタの機能+キーボードで作業を行ってみる(2〜3
ループ分試しておくといいです)
・うまく行くパターンが確立できたら次に「キー操作の記録」機能で1ループ分だけ
マクロに記録しておく
・最後に上記の記録されたマクロの実際の処理がされている部分をwhileループの中
に入れてあげる
とすると簡単かもしれません。

「キー操作の記録」のヘルプ:
https://help.maruo.co.jp/hidemaru/html/210_CmdOther_KeyboardMacro.html



// マクロによって秀丸エディタの検索設定が書き換わってしまうことを防ぐための
おまじない
setcompatiblemode 0x20000;

gofiletop;

// 行頭"^"から始まる"()"でグループ化した検索を行い、1個目のグループを削除す
るように置き換える
// \\d+ : 数字の1回以上の連続
// \\s+ : 空白類の1回以上の連続
// .+   : 改行以外の任意の文字の1回以上の連続
// \\2  : 検索対象文字列の()で囲われている部分の何個目か
// (秀丸エディタの検索等で使用する \ 記号はマクロの中では \\ と記載します)
replaceallfast "^(\\d+\\s+)(.+▲.+)", "\\2", regular;

// 結果をメッセージで表示
##n = result;
if(##n == -1){
  message "置き換えが中断されました。";
}else if(##n == 0){
  message "置き換えの対象が見つかりませんでした。";
}else{
  message str(##n) + "件の置き換えを行いました。";
}

[ ]
RE:37006 replacedownに関してNo.37007
ヒラメ さん 18/12/31 14:37
 
文字化けしてしまいました。

> (2〜3ループ分試しておくといいです)
  (2から3ループ分試しておくといいです)

[ ]