- 作成者投稿
- 2013年1月21日 6:12 am #11452redakt55参加者
並べ替え機能はとても便利です。
オプションもいくつかあって,何を基準に並べ替えるかがある程度選べます。
しかし,現実にはもっと柔軟に指定したいものです。たとえば,CSV において 4 カラム目の値で並べ替えることは現在でもできますが,4 カラム目が同値のときは 2 カラム目で判定する,といったことはできないと思います。
これを実現するには,引数に行を与えて行の〈値〉を計算する「評価関数」が自由に定義できればいいことになります。
評価関数の値を元にふつうにソートを行います。
スクリプトからだけでもこういうことができるといいのですが。※Ruby の Enumerable#sort_by メソッドのようなソート方法です。
JavaScript でも Array.sort は引数に比較関数が取れますが,これはイマイチです。同じ要素について何度も比較関数が呼ばれるので,無駄な重複計算が発生します。2013年1月21日 6:59 pm #11456Yutaka Emuraキーマスターredakt55 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
現バージョンの場合、安定ソートになっているため、4 カラム目でソートを行った後、2 カラム目でソートを行えば、ご希望の動作になるかと思います。お試しいただけると幸いです。
ご希望のように、これらのオプションをあらかじめ指定できれば、さらに便利になるかと思います。これについては検討させてください。
どうぞよろしくお願い申し上げます。
2013年1月22日 1:13 am #11458redakt55参加者現バージョンの場合、安定ソートになっているため、4 カラム目でソートを行った後、2 カラム目でソートを行えば、ご希望の動作になるかと思います。
うっ,確かに。これは気づきませんでした。
ただ,要望は「複数カラムで CSV のソートができるように」ということではなく,ソーティングの基準になる評価値が自由に(スクリプトで)定義できる汎用の仕組みです。
たとえば,単語と読みからなるデータを,百科事典的に
・読みの音引き「ー」を削除して
・小書きの仮名を並字にして
・濁音を清音化して
ソートするなど,ソートの方法は多種多様ということですね。2013年1月22日 4:43 am #11461Yutaka Emuraキーマスターredakt55 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
わかりました。これは複雑になりそうですが、検討してみます。
どうぞよろしくお願い申し上げます。
- 作成者投稿
- このトピックに返信するにはログインしてください。