テキスト行並び替えツール

改行で区切った行を,日本語指定の文字列順,行内で最初に見つかる数値の順,文字列の長さ順,シャッフルで並び替えます.前後の余白と空行は初期設定で整理され,重複行の除外も必要なときに選べます.

読み込み中...

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

テキストソーターの全体像と利用手順

テキストソーターは,入力された複数行のテキストを所定の規則に従って並び替えるブラウザツールです.テキストエリアへのユーザー入力,並び替えモードや除外設定の変更,またはデモリストの読み込みが行われるたびに,内部の「triggerSort」処理がブラウザのメインスレッド上で同期的に実行されます.

環境やデータ量によっては処理時間を要する場合があるため,あらゆる環境での処理速度を保証するものではありません.

内部の処理手順として,まず入力テキストをLF(ラインフィード)およびCRLF(キャリッジリターン+ラインフィード)の改行コードを区切りとして行ごとの配列に分割します.その後,各行の空白トリム,空行の除外,重複行の除外という順番で設定に基づくデータ整理が行われ,最終的に選択されたモードでの並び替えまたはシャッフルを経て,再びLFの改行コードで結合されて画面に出力されます.

本ツールの画面には明示的な実行ボタンや初期化用のクリアボタン,ファイルのアップロードおよび保存機能は存在しません.画面上ではテキストの入力行数と処理結果の出力行数がそれぞれ数値として表示されます.また,処理結果のテキストが存在する場合にのみ結果をクリップボードへ送るコピーボタンが利用可能になりますが,OSやブラウザの仕様に依存するため,すべての操作においてコピーの成功を確約するものではありません.

第2章

用途に応じた7つの並び替えモードの詳細解析

本ツールは,テキストの特性に合わせて選択できる7種類の独立した処理モードを提供しています.

日本語文字列の昇順および降順モードでは,プログラム内部で「localeCompare」メソッドに日本語("ja")を指定した専用の文字列比較を実行します.ただし,ツールには漢字の正しい読み仮名を推論して読み取る機能はないため,辞書のような厳密な五十音順(あいうえお順)に並び替える動作は保証されません.

なお,アルファベットの大文字と小文字の区別をオフにする設定が選択されている場合は,内部の比較用として小文字化された値を用いて判定が行われます.

第三および第四のモードは,本ツールの特徴的な機能である数値ベースの昇順および降順ソートです.このモードでは,行全体の文字列を比較するのではなく,各行の先頭から走査して最初に見つかった数値を一つだけ抽出し,それを比較キーとして利用します.数値の抽出ロジックは正規表現を用いており,先頭の任意のマイナス記号,一つ以上の数字,そしてドットとそれに続く数字による小数部を一つの数値ブロックとして認識します.

例えば,入力行が「A2B10」であれば最初の数字である「2」が抽出され,「A10B2」であれば「10」が抽出されます.指数表記のような「1e3」という入力は「1」として処理され,「3.14」は小数として,「-2」は負の数として正しく評価されます.注意点として,同一行内に複数の数値が存在しても二つ目以降は無視されるため,例えば「item2」と「item10」はそれぞれ2と10として正しくソートされますが,行全体を解析する完全な自然ソートアルゴリズムではありません.

数値を一切含まない行は,昇順・降順の指定に関わらず常にリストの末尾に移動させられ,それら数値のない行同士は,日本語指定の文字列比較で昇順なら昇順,降順なら降順に並びます.

第五および第六のモードは,行を構成する文字数の短い順および長い順でのソートです.JavaScriptの文字列lengthによる長さで順位が決まり,絵文字などは見た目の一文字と一致しない場合がありますが,文字数が完全に一致する行が複数存在した場合は,第一モードと同様の日本語文字列順による比較が副次的な基準として適用され,順位が確定します.

シャッフルモードは,配列の要素を入れ替えるフィッシャー・イェーツ(Fisher-Yates)のアルゴリズムにおいて,インデックス「j」の選択に標準の「Math.random」関数を利用しています.シャッフルが選択されている状態で入力の変更や設定の切り替えが行われると,その都度新しい順序への再計算が同期的に実行されます.暗号学的に安全な乱数生成器ではないため,厳密な公平性の保証はありません.

第3章

データ精度のための行クリーンアップ機能

並び替えのメイン処理に入る前段階として,ツールは入力データに対する複数のクリーンアップオプションを提供しています.これらの設定はユーザーの要件に応じて個別にオン・オフの切り替えが可能です.

まず,各行の先頭および末尾に存在する不要な空白文字(半角スペース,全角スペース,タブ文字など)を取り除くトリム機能があり,これは初期状態でオンに設定されています.次に,文字を含まない完全な空行を配列から除外する機能も初期状態でオンになっています.なお,スペースやタブといった空白文字だけで構成された入力データが与えられた場合,仮にすべてのクリーンアップ設定を手動でオフに変更したとしても,入力全体が空白だけなら計算前に空の結果へ戻すため,最終的な出力結果は空欄です.

さらに,データセットの重複を排除する機能が用意されていますが,意図しないデータの消失を防ぐため,初期状態ではオフに設定されています.この機能をオンにすると,ツールは配列内を走査し,既に登録された判定キーと一致する行を発見した場合,それを取り除きます.この重複判定において大文字と小文字の区別を無効化する設定が併用されている場合,内部の比較エンジンは双方を小文字化して同等性をチェックしますが,最終的に出力に残されるのは入力欄において最も早く出現した元の文字列表記となります.

例えば「Apple」の後に「APPLE」と入力されている場合,後者は重複として除外されますが,出力される文字列は小文字化された「apple」ではなく,最初に入力された「Apple」のまま保持されます.

第4章

内蔵デモデータによる具体的な動作検証

ツールの挙動を直感的に理解するための手立てとして,九行からなる固有のデモデータが内蔵されています.デモボタンを押下すると,入力エリアに「バナナ」「リンゴ」「10. みかん」「2. イチゴ」「スイカ」「1. メロン」「アボカド」「リンゴ」「3. グレープフルーツ」というテキストが入力欄へセットされます.

この状態から,初期設定(空白トリムオン,空行除外オン,重複除外オフ)のまま「数値順(昇順)」モードを選択した場合の内部処理のプロセスをトレースしてみます.まず,抽出エンジンが各行から最初の数値を特定します.「1. メロン」からは1が,「2. イチゴ」からは2が,「3. グレープフルーツ」からは3が,「10. みかん」からは10が比較キーとして取得されます.

これらの行は数値の昇順,すなわち1,2,3,10の順序でリストの最上部に配置されます.

続いて,数値を含まない残りの行(バナナ,リンゴ,スイカ,アボカド,リンゴ)の処理に移行します.これらの行は数値を持つ行よりも後方に配置され,さらにそのグループ内において文字列順(アボカド,スイカ,バナナ,リンゴ,リンゴ)でソートされます.

最終的な統合結果は,「1. メロン」「2. イチゴ」「3. グレープフルーツ」「10. みかん」「アボカド」「スイカ」「バナナ」「リンゴ」「リンゴ」となります.ここで着目すべきは,「リンゴ」という文字列が二行並んで出力されている点です.これは,重複除外設定が初期状態でオフになっているため,入力データに存在する二つの「リンゴ」がそのまま独立した行として扱われ,文字列ソートの結果として隣接して配置されたためです.

もしユーザーが手動で重複除外のトグルをオンに切り替えれば,再計算が走り,二つ目の「リンゴ」は画面から姿を消すことになります.

第5章

大きなリストの処理と通信の範囲

システムのパフォーマンスおよび運用上の留意点として,本ツールのテキスト分割や並び替え処理は,お使いのブラウザのメインスレッド上で同期的に実行される仕様となっています.そのため,数万行規模の巨大な入力データを貼り付けた場合にはブラウザに大きな計算負荷がかかり,一時的に画面の応答が滞る可能性があります.

通信環境に関して,入力されたテキストデータが並び替え処理の目的で外部のサーバーへ送信されることはありません.しかしながら,ウェブページを表示する仕組みの都合上,アクセス解析ツールや広告表示モジュールなどによる別の通信が発生する可能性があります.完全に外部との通信を遮断した状態での動作を保証するものではありません.

このようなブラウザ内処理とウェブサイトの特性から,非公開のプライベートなファイルデータや,機密性の高い顧客リストの処理に本ツールを安易に使用することは推奨されません.

よくある質問(FAQ)

A.
行内で最初に見つかる整数・負数・小数の値を一つだけ比較します.A2B10 の比較キーは2,A10B2は10です.数字のない行は昇順・降順とも最後に置きます.行内のすべての数字を解析する自然順ソートではありません.
A.
行の前後のトリムと空行除外は初期状態でオンですが,重複行の除外はオフです.重複除外をオンにすると,トリムと空行除外の後に判定し,最初に出てきた行の表記を残します.デモ内の二つの「リンゴ」も初期状態では両方残ります.
A.
このツールは日本語指定の文字列比較を使いますが,漢字の読み仮名を推測する機能はありません.辞書の読み順どおりの厳密な五十音順になるとは保証できません.
A.
はい.入力や設定を変えるたびにシャッフルを再計算します.行の順序はMath.randomを使ったFisher–Yates方式で変更しますが,暗号学的な乱数や抽選の厳密な公平性は保証しません.
A.
このツールにファイル保存やクラウド保存の機能はありません.並び替えの計算はブラウザ内で行い,入力をその処理のためにサーバーへ送るコードはありません.ただし広告や解析などサイト側の別通信はあり得るため,外部通信が一切ないとは保証できません.