指定の行内に含まれる文字列を変換No.37307
SunSolaris さん 19/04/27 11:39
 
 初めまして、秀丸エディターで指定の行内に含まれる文字列を変換していのですが
上手くいきません。

(マクロの内容)
movetolineno 1,2;
//while( code != eof ){
//ファイルの終わりまで以下の処理実行します
 searchdown2 "/";
 if( result == true ){
   movetolineno 1,2;
   replaceallfast "/" , "\t" , nohilight; //文字列"/"をタブに高速置換
    }
 else{
  break;
  }

(指定する行での文字列内容)
牡5/452(-2)/

 上記の内容で記述をしますとファイル内の全ての文字列で実行されてしまします、
指定の行番号だけで実行をしたいのですがどうか御教授を御願い致します。

[ ]
RE:37307 指定の行内に含まれる文字列を変No.37308
ラフ さん 19/04/27 19:27
 
> 初めまして、秀丸エディターで指定の行内に含まれる文字列を変換していのです
>が上手くいきません。
>
今一やりたいことを理解していないかもしれませんが、
2行目にある 牡5/452(-2)/ 形式の/ をタブに置換したいと理解しました。
replaceall系の文はファイル全体で置換する文なのでファイルエンドまで実行してし
まいます。
従って、検索結果が2行目でなければ終了するようなループ処理をするしかないかな
と思います。
最近あまり秀丸マクロ書いていないので別手段あるかもしれませんが(^^;

こんな感じでいかかでしょうか?
// -------------------------------------------------
movetolineno 1,2; // カーソルを2行目に移す
while( lineno == 2 ) { //カーソルが2行目にある間
 searchdown2 "/"; // /を検索
 if( result == true ){
  if(lineno == 2) {  // 2行目で見つかった
   replacedown "/" , "\t" , nohilight; //文字列"/"をタブに高速置換
  }
 }else // 見つからなかった
 break;
}
movetolineno 1,2; // カーソルを2行目に戻す
// -------------------------------------------------


[ ]