「
行並べ替え
」を編集中
2024年9月1日 (日) 19:33時点における
MSY-07
(
トーク
|
投稿記録
)
による版
(箇条書きの修正、改行の除去)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 概要 == 選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。 [[ファイル:SortLineBySelection.png]] {|class="wikitable" !※全行を |<b style="color:#c00;">※非選択時に表示。</b>文書全体が並べ替えの対象になります。 |- !並べ替え(Unicode) |Unicode順の並べ替えを実行します。 |- !並べ替え(SJIS風) |Shift_JIS風の並べ替えを実行します。→ [[#並べ替え(SJIS風)]] |- !昇順 - 降順 |昇順 (A→Z) か降順 (Z→A) かを切り替えます。 |- !文字順 - 数値順 |半角数字列の並べ方を切り替えます。<br>文字順 (1<10<2) は、文字として一字ずつ比較します。<br>数値順 (1<2<10) は、非負整数(正の整数)として比較します。→ [[#数値順]] |- !大文字/小文字を区別する |しない場合、大文字を小文字とみなします。 |- !全角/半角英数を区別する |しない場合、全角英数を半角とみなします。 |- !半角/全角カナを区別する |しない場合、半角カナを全角とみなします。 |- !ひらがな/カタカナを区別する |しない場合、ひらがなをカタカナとみなします。 |} == ダウンロード == [[ファイル:行並べ替え.zip]] ; 内容 * 行並べ替え.ico * 行並べ替え.js == 更新履歴 == ; 2020/05/20 (rev.12) * 設定を一時的に記憶する機能の不具合を修正。 ; 2020/05/17 (rev.11) * .zip 内の Macros フォルダを除去。ファイルのみ収録。 * .ico の更新日時を .js と同期するのをやめた。 * 複数選択時は並べ替え不可とした(対応に手間取るため)。 * 元に戻すで選択範囲も戻すようにした(Mery 3.0.1 以降)。 ** 都合上、<b style="color:#c00;">Mery 3.0.0 は動作対象外</b>とした。 * ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更。 * break ラベル文 → new function 式 & return に変更。 ; 2019/04/12 (rev.10) * Quit() → break ラベル文に変更。 ** Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため。 * 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした。 ; 2018/04/15 (rev.9) * 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)。 ** PopupMenu.Add() の Id に負の値を使用しないよう変更。 ; 2017/06/25 (rev.8) * アイコンファイルに24x24・32x32・48x48の画像を追加。 * 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更。 * 折り返し行を探査する方法を変更し、高速化(1万表示行で4秒→0.1秒)。 * 並べ替え実行後、実行範囲を行選択する際、末尾の改行を含めるようにした。 * 「並べ替え(Shift_JIS風)」→「並べ替え(SJIS風)」に改称。 * 「辞書順」→「文字順」に改称。 * 「文字順」→「数値順」に初期設定を変更。 * 「数値順」で同値の場合、文字順 → 先頭ゼロ比較に変更し、高速化。 * 「半角/全角英数カナを区別」の対象から<b style="color:#c00;">半角カナを除外</b>し、「全角/半角英数を区別」に変更。 * 「半角/全角カナを区別」設定を追加。 * 比較用変換の処理を改造。 ** 索引を「正規表現」と「文字列」の構成に仕様変更。 <!-- コード変換の処理を charCodeAt() 走査 → match() 配列走査 に変更。 --> ** 索引の改行文字 [LF] と半角数字 (0~9) の符号位置は変更厳禁だった仕様を解消。 <!-- U+000D [CR] をデリミタに利用し、コード変換を回避するようにした。 --> ** 索引の上限字数を 65535 と明文化し、上限以上は処理しないようにした。 ** 数値順の上限桁数が 65519 → 65505 に 14 縮小。 * <b style="color:#c00;">並べ替え(Unicode) 時、サロゲートペアの扱いが変わりました。</b> ** rev.7 までは、UTF-16順 (U+D7FF~E000 の間) に並びましたが、rev.8 からは、Unicode順 (U+FFFF の次) に並びます。 * <b style="color:#c00;">並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b> ** rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます。 ; 2015/12/26 (rev.7) * アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更。 * 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。 ; 2014/10/12 (rev.6) * 「辞書順/数値順」設定を追加。 * 「半角/全角を区別」の対象から<b style="color:#c00;">記号を除外</b>し、「半角/全角英数カナを区別」に変更。 ** 半角/全角の対応が定義しづらく、区別の対象となる文字が分かりにくいため。 * ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て。 * ポップアップメニューの「半角/全角」「大/小文字」の配置を交換。 * ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更。 ; 2014/07/27 (rev.5) * アイコンファイルを同梱し、読み込むようにした。 * 並べ替え実行後、実行範囲を行選択するようにした。 * <b style="color:#c00;">矩形選択時、折り返し行が含まれていると、正しく並べ替えられない不具合を修正。</b> ** ただし、折り返し行を探査する処理に時間がかかります(1万表示行で4秒)。 * rev.4 の処理高速化手法の一部(コード変換)を取り下げ。 ** マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに。 * 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。 * 「半角/全角を区別」の対象に " ' \ の3字を追加。 * 「大/小文字を区別」の処理を toLowerCase() → toLocaleLowerCase() に変更。 ** Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした。 * 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)。 * 「かな/カナを区別」の対象に ゝ ゞ の2字を追加。 ; 2013/09/19 (rev.4) [[ファイル:行並べ替え_r4.zip]] * ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)。 * <b style="color:#c00;">並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b> ** rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います。 ; 2013/09/19 (rev.3) [[ファイル:行並べ替え_r3.zip]] * 「半角/全角を区別」設定を追加。 * 非選択時にエラーが出る不具合を修正。 ** ポップアップメニューに「並べ替えが行えない」旨を表示するようにした。 * 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消。 ; 2013/08/29 (rev.2) [[ファイル:行並べ替え_r2.zip]] * ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)。 * <b style="color:#c00;">並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります</b>(rev.3 で修正)。 ; 2013/08/25 (rev.1) * 初版公開。 == 仕様 == === 並べ替え(SJIS風) === Microsoft コードページ932 [http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932] をベースに、下記の仕様で並べます。 * NEC特殊 / IBM拡張記号類 <code>①~"</code> は、全角記号の次に。<code>㍻</code>は<code>㍼</code>の次に並べる。 * ローマ数字の小文字形 <code>ⅰ~ⅹ</code> は、大文字形 <code>Ⅰ~Ⅹ</code> の次に並べる。 * 未定義文字 (0x80, A0, FD, FE, FF)、ユーザー定義外字 (0xF0A0~F9FC) は非対応。 * Shift_JIS(CP932)に無い文字は、Unicode順に並べる。<b style="color:#c00;">(rev.8以降)</b> === 数値順 === 半角数字列を非負整数(正の整数)の順に並べます。 * 負数<code>-12</code> 小数<code>0.12</code> 分数<code>1/2</code> 指数<code>1.2e3</code> などには対応していません。 * <b style="color:#c00;>全角数字</b>は「全角/半角英数を区別」設定で扱いが変わります。 ** 区別する場合、全角数字は対象外となり、文字順になります。 ** 区別しない場合、半角数字とみなすため、数値順になります。 * 同値の場合、先頭ゼロの個数で比較します。例> <code>001</code><<code>01</code><<code>1</code>。 * 仕様上、10の65505乗 以上の数値は扱えません。超過した数値同士は文字順で比較されます。 === 大文字/小文字を区別しない === 大文字を小文字とみなして並べます。 * <code>[ ] \ ^ _</code> が <code>A</code> の前に並ぶようになります。 * ギリシャ文字やローマ数字など、大小が存在する文字も区別しなくなります。 * 小さい <code>っ ぁ ゃ</code> など仮名文字は対象外です。 === 全角/半角英数を区別しない === 全角英数 <code>0~9 A~Z a~z</code> を半角とみなして並べます。 === 半角/全角カナを区別しない === 半角カナ類 <code>ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚</code> を全角とみなして並べます。 === ひらがな/カタカナを区別しない === ひらがなをカタカナとみなして並べます。 * <code>゛ ゜ ゟ</code> が <code>ぁ</code> の前に並ぶようになります。 * <code>ゔ ゕ ゖ</code> は <code>ヴ ヵ ヶ</code> とみなすため、Shift_JIS(CP932)に無い文字と扱われなくなります。 == コメント == * [http://merysmacro.seesaa.net/article/372975309.html 処理速度の改善を図ってみました]ので、ご参考まで。 (ks) ** ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme) * Mery 64 ビット版だと動作しないようです。マクロの 154, 155 行目ですが、PopupMenu インターフェイスの Add メソッドの Id 引数は UINT_PTR なので正の値を指定してやる必要があります。マクロリファレンスには int と記載しておりましたが間違いでした、申し訳ございません。(kuro)
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク