文字列の字数の大きい順にソートする方法No.07168
rosegardenyk さん 12/11/13 04:09
 
マクロ初心者の rosegardenyk です。
下記のように文字数を計算して行頭に書いてタブ区切りしてからソートする方法しか
思いつきません。これだとまた行頭の文字数+タブを削除しなければならず、気の利
かないやり方だなと思います。他によい方法がないでしょうか? 実際の文字列はカ
ナ漢字英数字交じりです。


ソート前
8 filter "" , "Sort" , "000000100001000\"10";
21 selectall;
453 setcompatiblemode 0x0F;
77 aasds llsl
90 fagagaho ui9o
4 lllllaoai pui
212 pandudgu boh8i
778 sppsp looio

マクロの記録
 setcompatiblemode 0x0F;
 selectall;
 filter "" , "Sort" , "100100100000000\"10";

ソート後
778 sppsp looio
453 setcompatiblemode 0x0F;
212 pandudgu boh8i
90 fagagaho ui9o
77 aasds llsl
21 selectall;
8 filter "" , "Sort" , "000000100001000\"10";
4 lllllaoai pui

[ ]
RE:07168 文字列の字数の大きい順にソートNo.07169
秀まるお2 さん 12/11/13 15:06
 
 そういう作戦しか無いように思います。

 マクロとしては、たとえば僕が今試しに作ったらこんな感じになりました。行
頭に数字を入れてくのはちょっと時間がかかりますが、ソートとその後の数字除
去は一瞬で終わると思います。先頭にdisabledrawを入れればもっと速くなりま
す。

    gofiletop;
    while(1) {
        #len = linelen2;
        $len = str(#len);
        $len = leftstr( "00000", 5 - strlen($len) ) + $len + "\t";
        insertfix $len;
        #y = y;
        golineend2;
        down;
        golinetop2;
        if( #y == y ) {
            break;
        }
    }
    selectall;
    filter "" , "Sort" , "100000000000000\"00";
    replaceallfast "^[0-9]{5}\t", "", regular;

[ ]
RE:07169 文字列の字数の大きい順にソートNo.07170
rosegardenyk さん 12/11/13 18:20
 
> そういう作戦しか無いように思います。
やはり、そうですか。

> マクロとしては、たとえば僕が今試しに作ったらこんな感じになりました。
丁寧なコードをありがとうございます。大変参考にになります。

[ ]