文字列中の数値データの抜き取り(コピーNo.18343
abe_mashu さん 04/11/16 10:40
 
皆様 abe-utnlです。 お世話になります。
以下のような文字列の変換をしたい場合、どのようにすれば速くなるのかを教えてく
ださい。

(以下、X,Yは数値、AからDは文字列)

処理したいデータ
#   AAAAAA (XXXEE) BBBBB
     CCCCC   #  DDDDD
  a1 b1 c1
  a2 b2 c2
 ・・・・
#   AAAAAA (YYYEE) BBBBB
     CCCCC   #  DDDDD
  a3 b3 c3
  a4 b4 c4
 ・・・・
(繰り返し)

最終的に整えたい形
#   AAAAAA (XXXEE) BBBBB
     CCCCC   "XXXDD,  DDDDD"
  a1 b1 c1
  a2 b2 c2
 ・・・・
#   AAAAAA (YYYEE) BBBBB
     CCCCC   "YYYEE  DDDDD"
  a3 b3 c3
  a4 b4 c4

要は、文字列中にあるXXXやYYYといった数値データを一行下にコピーしたいというこ
となので、浅はかながら
A:
searchdown "\x28";
if(result ==no )
{endmacro;}
else
{
right;
beginsel;
right; right; right;
endsel;
copy;
searchdown "EE";
paste;
goto A;
}
としてみて一応成功はしたのですが、どうも
endsel;
copy;
searchdown "EE";
paste;
のあたりで非常に遅くなってしまいます。

何か良い解決方法を教えてください。
宜しくお願いします。

[ ]
RE:18343 文字列中の数値データの抜き取りNo.18346
秀丸担当 さん 04/11/16 18:22
 

>としてみて一応成功はしたのですが、どうも
>endsel;
>copy;
>searchdown "EE";
>paste;
>のあたりで非常に遅くなってしまいます。

同じ状況を作ってやってみようとしたのですが、このマクロでは期待される形に
ならないのではないかと思います。
マクロが正しく動くかというのは直接の問題ではないので、そのことは置いてく
として、問題は上記の部分で遅いというのは色々と考えられることがあります。
より詳しいことを教えていただかないと、なんとも言えません。

copyで遅いのであれば、クリップボード履歴や、他のクリップボード履歴を監視
するソフトが影響しているのかもしれません。
pasteで遅いのであれば、一行の文字数がとても長かったり、強調表示する文字
列が非常に多かったりして、影響していることも考えられます。
マクロを使わずにコピー、検索、貼り付けで手動でやった場合も遅いのか、マク
ロで連続して処理しているときのみが遅いのか、データの量や一行の長さによっ
て違うのか、考えられる原因はいろいろあります。

もし差し支えなければ、問題の起きるデータと、設定内容をファイルに保存した
ものを送っていただけると、より確実に調査することができると思います。
送っていただける場合、送り先は xxxxxxxx@nifty.ne.jp まで秀丸担当宛てであ
ることを書いて送ってください。
設定内容は、[その他]→[設定内容の保存/復元]から保存できます。

[ ]
RE:18343 文字列中の数値データの抜き取りNo.18349
Iranoan さん 04/11/16 18:31
 
 abe_mashu さん今日は、Iranoan です。
> のあたりで非常に遅くなってしまいます。
 安易ですが、disabledraw をおまじない代わりに最初に付けては。

[ ]
RE:18343 文字列中の数値データの抜き取りNo.18350
アルビレオ さん 04/11/16 18:56
 
秀丸ユーザーのアルビレオです。

>処理したいデータ
>#   AAAAAA (XXXEE) BBBBB
>     CCCCC   #  DDDDD
>  a1 b1 c1
>  a2 b2 c2
> ・・・・
>#   AAAAAA (YYYEE) BBBBB
>     CCCCC   #  DDDDD
>  a3 b3 c3
>  a4 b4 c4
> ・・・・
>(繰り返し)
>
>最終的に整えたい形
>#   AAAAAA (XXXEE) BBBBB
>     CCCCC   "XXXDD,  DDDDD"
>  a1 b1 c1
>  a2 b2 c2
> ・・・・
>#   AAAAAA (YYYEE) BBBBB
>     CCCCC   "YYYEE  DDDDD"
>  a3 b3 c3
>  a4 b4 c4

replaceall "^#.+\\(\\f.+\\f\\).+\\n.*\\f#\\f.+$","\\0\\1\\2\"\\1\4\"",regular;
でどうでしょう?

それと、こういう純粋にマクロだけに関することは「マクロ会議室」に書いた方
がいいかと思います。

[ ]
RE:18350 文字列中の数値データの抜き取りNo.18351
abe_mashu さん 04/11/16 23:34
 
Iranoanさん、アルビレオさん
ありがとうございました。試してみたらうまく動きました。
また、マクロ会議室があるのを知らなかったので、場違いですみませんでした。


また、秀丸担当さん
現在のバージョンはちょっと古くて3.19です。
設定内容の保存の仕方が分からないので教えていただけませんか。
殆どデフォルトで使っています。一行の文字数を300ぐらいにしていますが、実際の
データは100くらいです。
別途、メールにて相談させてください。


[ ]
RE:18351 文字列中の数値データの抜き取りNo.18358
秀丸担当 さん 04/11/17 18:37
 

>現在のバージョンはちょっと古くて3.19です。
>設定内容の保存の仕方が分からないので教えていただけませんか。
>殆どデフォルトで使っています。一行の文字数を300ぐらいにしていますが、実際の
>データは100くらいです。
>別途、メールにて相談させてください。

V3.19の場合、秀丸と常駐秀丸を全て終了させて、秀丸をインストールしたフォ
ルダ(標準でc:\Program Files\Hidemaru)にある、Hmsetup.exeを実行すると、
「設定情報の保存/復元」ができます。

最新版はV4.14ですので、遅いというものが不具合であるとしたら、もしかした
らV4.14で修正されているかもしれません。

[ ]