「行並べ替え」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
日付のフォーマットを変更
MSY-07 (トーク | 投稿記録)
バージョンと日付のフォーマットを変更
40行目: 40行目:


== 変更履歴 ==
== 変更履歴 ==
; 2020-05-20 (rev.12)
; rev.12 (2020-05-20)
* 設定を一時的に記憶する機能の不具合を修正。
* 設定を一時的に記憶する機能の不具合を修正。
; 2020-05-17 (rev.11)
; rev.11 (2020-05-17)
* .zip 内の Macros フォルダを除去。ファイルのみ収録。
* .zip 内の Macros フォルダを除去。ファイルのみ収録。
* .ico の更新日時を .js と同期するのをやめた。
* .ico の更新日時を .js と同期するのをやめた。
50行目: 50行目:
* ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更。
* ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更。
* break ラベル文 → new function 式 & return に変更。
* break ラベル文 → new function 式 & return に変更。
; 2019-04-12 (rev.10)
; rev.10 (2019-04-12)
* Quit() → break ラベル文に変更。
* Quit() → break ラベル文に変更。
** Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため。
** Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため。
* 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした。
* 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした。
; 2018-04-15 (rev.9)
; rev.9 (2018-04-15)
* 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)。
* 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)。
** PopupMenu.Add() の Id に負の値を使用しないよう変更。
** PopupMenu.Add() の Id に負の値を使用しないよう変更。
; 2017-06-25 (rev.8)
; rev.8 (2017-06-25)
* アイコンファイルに24x24・32x32・48x48の画像を追加。
* アイコンファイルに24x24・32x32・48x48の画像を追加。
* 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更。
* 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更。
79行目: 79行目:
* <b style="color:#c00;">並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b>
* <b style="color:#c00;">並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b>
** rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます。
** rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます。
; 2015-12-26 (rev.7)
; rev.7 (2015-12-26)
* アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更。
* アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更。
* 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。
* 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。
; 2014-10-12 (rev.6)
; rev.6 (2014-10-12)
* 「辞書順/数値順」設定を追加。
* 「辞書順/数値順」設定を追加。
* 「半角/全角を区別」の対象から<b style="color:#c00;">記号を除外</b>し、「半角/全角英数カナを区別」に変更。
* 「半角/全角を区別」の対象から<b style="color:#c00;">記号を除外</b>し、「半角/全角英数カナを区別」に変更。
89行目: 89行目:
* ポップアップメニューの「半角/全角」「大/小文字」の配置を交換。
* ポップアップメニューの「半角/全角」「大/小文字」の配置を交換。
* ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更。
* ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更。
; 2014-07-27 (rev.5)
; rev.5 (2014-07-27)
* アイコンファイルを同梱し、読み込むようにした。
* アイコンファイルを同梱し、読み込むようにした。
* 並べ替え実行後、実行範囲を行選択するようにした。
* 並べ替え実行後、実行範囲を行選択するようにした。
102行目: 102行目:
* 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)。
* 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)。
* 「かな/カナを区別」の対象に ゝ ゞ の2字を追加。
* 「かな/カナを区別」の対象に ゝ ゞ の2字を追加。
; 2013-09-19 (rev.4) [[ファイル:行並べ替え_r4.zip]]
; rev.4 (2013-09-19) [[ファイル:行並べ替え_r4.zip]]
* ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)。
* ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)。
* <b style="color:#c00;">並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b>
* <b style="color:#c00;">並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました。</b>
** rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います。
** rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います。
; 2013-09-19 (rev.3) [[ファイル:行並べ替え_r3.zip]]
; rev.3 (2013-09-19) [[ファイル:行並べ替え_r3.zip]]
* 「半角/全角を区別」設定を追加。
* 「半角/全角を区別」設定を追加。
* 非選択時にエラーが出る不具合を修正。
* 非選択時にエラーが出る不具合を修正。
** ポップアップメニューに「並べ替えが行えない」旨を表示するようにした。
** ポップアップメニューに「並べ替えが行えない」旨を表示するようにした。
* 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消。
* 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消。
; 2013-08-29 (rev.2) [[ファイル:行並べ替え_r2.zip]]
; rev.2 (2013-08-29) [[ファイル:行並べ替え_r2.zip]]
* ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)。
* ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)。
* <b style="color:#c00;">並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります</b>(rev.3 で修正)。
* <b style="color:#c00;">並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります</b>(rev.3 で修正)。
; 2013-08-25 (rev.1)
; rev.1 (2013-08-25)
* 初版公開。
* 初版公開。



2024年9月3日 (火) 06:29時点における版

概要

選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。

※全行を ※非選択時に表示。文書全体が並べ替えの対象になります。
並べ替え(Unicode) Unicode順の並べ替えを実行します。
並べ替え(SJIS風) Shift_JIS風の並べ替えを実行します。→ #並べ替え(SJIS風)
昇順 - 降順 昇順 (A→Z) か降順 (Z→A) かを切り替えます。
文字順 - 数値順 半角数字列の並べ方を切り替えます。
文字順 (1<10<2) は、文字として一字ずつ比較します。
数値順 (1<2<10) は、非負整数(正の整数)として比較します。→ #数値順
大文字/小文字を区別する しない場合、大文字を小文字とみなします。
全角/半角英数を区別する しない場合、全角英数を半角とみなします。
半角/全角カナを区別する しない場合、半角カナを全角とみなします。
ひらがな/カタカナを区別する しない場合、ひらがなをカタカナとみなします。

ダウンロード

ファイル:行並べ替え.zip

内容
  • 行並べ替え.ico
  • 行並べ替え.js

変更履歴

rev.12 (2020-05-20)
  • 設定を一時的に記憶する機能の不具合を修正。
rev.11 (2020-05-17)
  • .zip 内の Macros フォルダを除去。ファイルのみ収録。
  • .ico の更新日時を .js と同期するのをやめた。
  • 複数選択時は並べ替え不可とした(対応に手間取るため)。
  • 元に戻すで選択範囲も戻すようにした(Mery 3.0.1 以降)。
    • 都合上、Mery 3.0.0 は動作対象外とした。
  • ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更。
  • break ラベル文 → new function 式 & return に変更。
rev.10 (2019-04-12)
  • Quit() → break ラベル文に変更。
    • Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため。
  • 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした。
rev.9 (2018-04-15)
  • 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)。
    • PopupMenu.Add() の Id に負の値を使用しないよう変更。
rev.8 (2017-06-25)
  • アイコンファイルに24x24・32x32・48x48の画像を追加。
  • 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更。
  • 折り返し行を探査する方法を変更し、高速化(1万表示行で4秒→0.1秒)。
  • 並べ替え実行後、実行範囲を行選択する際、末尾の改行を含めるようにした。
  • 「並べ替え(Shift_JIS風)」→「並べ替え(SJIS風)」に改称。
  • 「辞書順」→「文字順」に改称。
  • 「文字順」→「数値順」に初期設定を変更。
  • 「数値順」で同値の場合、文字順 → 先頭ゼロ比較に変更し、高速化。
  • 「半角/全角英数カナを区別」の対象から半角カナを除外し、「全角/半角英数を区別」に変更。
  • 「半角/全角カナを区別」設定を追加。
  • 比較用変換の処理を改造。
    • 索引を「正規表現」と「文字列」の構成に仕様変更。
    • 索引の改行文字 [LF] と半角数字 (0~9) の符号位置は変更厳禁だった仕様を解消。
    • 索引の上限字数を 65535 と明文化し、上限以上は処理しないようにした。
    • 数値順の上限桁数が 65519 → 65505 に 14 縮小。
  • 並べ替え(Unicode) 時、サロゲートペアの扱いが変わりました。
    • rev.7 までは、UTF-16順 (U+D7FF~E000 の間) に並びましたが、rev.8 からは、Unicode順 (U+FFFF の次) に並びます。
  • 並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました。
    • rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます。
rev.7 (2015-12-26)
  • アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更。
  • 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。
rev.6 (2014-10-12)
  • 「辞書順/数値順」設定を追加。
  • 「半角/全角を区別」の対象から記号を除外し、「半角/全角英数カナを区別」に変更。
    • 半角/全角の対応が定義しづらく、区別の対象となる文字が分かりにくいため。
  • ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て。
  • ポップアップメニューの「半角/全角」「大/小文字」の配置を交換。
  • ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更。
rev.5 (2014-07-27)
  • アイコンファイルを同梱し、読み込むようにした。
  • 並べ替え実行後、実行範囲を行選択するようにした。
  • 矩形選択時、折り返し行が含まれていると、正しく並べ替えられない不具合を修正。
    • ただし、折り返し行を探査する処理に時間がかかります(1万表示行で4秒)。
  • rev.4 の処理高速化手法の一部(コード変換)を取り下げ。
    • マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに。
  • 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。
  • 「半角/全角を区別」の対象に " ' \ の3字を追加。
  • 「大/小文字を区別」の処理を toLowerCase() → toLocaleLowerCase() に変更。
    • Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした。
  • 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)。
  • 「かな/カナを区別」の対象に ゝ ゞ の2字を追加。
rev.4 (2013-09-19) ファイル:行並べ替え r4.zip
  • ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)。
  • 並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました。
    • rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います。
rev.3 (2013-09-19) ファイル:行並べ替え r3.zip
  • 「半角/全角を区別」設定を追加。
  • 非選択時にエラーが出る不具合を修正。
    • ポップアップメニューに「並べ替えが行えない」旨を表示するようにした。
  • 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消。
rev.2 (2013-08-29) ファイル:行並べ替え r2.zip
  • ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)。
  • 並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります(rev.3 で修正)。
rev.1 (2013-08-25)
  • 初版公開。

仕様

並べ替え(SJIS風)

Microsoft コードページ932 [1] をベースに、下記の仕様で並べます。

  • NEC特殊 / IBM拡張記号類 ①~" は、全角記号の次に。の次に並べる。
  • ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並べる。
  • 未定義文字 (0x80, A0, FD, FE, FF)、ユーザー定義外字 (0xF0A0~F9FC) は非対応。
  • Shift_JIS(CP932)に無い文字は、Unicode順に並べる。(rev.8以降)

数値順

半角数字列を非負整数(正の整数)の順に並べます。

  • 負数-12 小数0.12 分数1/2 指数1.2e3 などには対応していません。
  • 全角数字は「全角/半角英数を区別」設定で扱いが変わります。
    • 区別する場合、全角数字は対象外となり、文字順になります。
    • 区別しない場合、半角数字とみなすため、数値順になります。
  • 同値の場合、先頭ゼロの個数で比較します。例> 001011
  • 仕様上、10の65505乗 以上の数値は扱えません。超過した数値同士は文字順で比較されます。

大文字/小文字を区別しない

大文字を小文字とみなして並べます。

  • [ ] \ ^ _A の前に並ぶようになります。
  • ギリシャ文字やローマ数字など、大小が存在する文字も区別しなくなります。
  • 小さい っ ぁ ゃ など仮名文字は対象外です。

全角/半角英数を区別しない

全角英数 0~9 A~Z a~z を半角とみなして並べます。

半角/全角カナを区別しない

半角カナ類 ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚ を全角とみなして並べます。

ひらがな/カタカナを区別しない

ひらがなをカタカナとみなして並べます。

  • ゛ ゜ ゟ の前に並ぶようになります。
  • ゔ ゕ ゖヴ ヵ ヶ とみなすため、Shift_JIS(CP932)に無い文字と扱われなくなります。

コメント

  • 処理速度の改善を図ってみましたので、ご参考まで。 (ks)
    • ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme)
  • Mery 64 ビット版だと動作しないようです。マクロの 154, 155 行目ですが、PopupMenu インターフェイスの Add メソッドの Id 引数は UINT_PTR なので正の値を指定してやる必要があります。マクロリファレンスには int と記載しておりましたが間違いでした、申し訳ございません。(kuro)
スポンサーリンク