単語をアルファベット順に並べる方法:大文字・数字・アクセントの規則
単語カードが混ざった、キーワードをアルファベット順にしたい、似た綴りをまとめて確認したい。並べ替えれば一目で分かりますが、順序には決まった規則があり、知らないと結果が「おかしい」と感じます。
単語を並べ替えたい場面
索引、用語集、語彙リストにはアルファベット順が求められます。数十件を手で並べると、後半ほど抜けが出ます。シャッフルされた単語カードや単語帳を辞書順に戻せば、教科書と照らし合わせやすくなります。
もう一つは近似の重複探しです。並べ替えると綴りの近い語が隣り合うため、color と colour、organise と organize のような揺れがすぐに見つかります。
- キーワードや用語集をアルファベット順にする
- シャッフルされた単語帳を辞書順に戻す
- 綴りの近い重複項目を探す
- 索引用にアルファベット順の項目を用意する
並び順の規則
単語を空白で分割し、文字列として 1 文字ずつ符号の値で比較します。英字では大文字の符号がすべて小文字より小さいため、Apple は apple より前に来て、大文字で始まる語が先頭に集まります。
数字は数値ではなく文字として比較するため、10 は 9 より前になります(文字 1 が 9 より小さいため)。アクセント付きの文字は符号が大きく、é は z の後ろに並びます。漢字は符号順で、読みとは関係ありません。結果は半角スペースでつないだ 1 行になり、重複は残ります。
- 大文字小文字を区別し、大文字がすべて先に来る
- 数字は文字として比較(10 が 9 より前)
- é は e の隣ではなく z の後ろ
- 重複は削除されず、出現回数だけ並ぶ
- 出力は半角スペースでつないだ 1 行
できないことと、代わりの方法
自然順ではありません。2 が 10 より前に来ることも、é を e として扱うこともありません。大文字小文字を無視した並びや言語習慣に沿った並びには対応せず、中国語のピンイン順や日本語の五十音順も得られません。
行を残したいときは行を並べ替えるツールを使います。大文字小文字を無視したいときは、無視する行の並べ替えを使います。コマンドラインの sort は既定でロケールの影響を受け、sort -f は大小を無視し、sort -V はバージョン番号向けです。
- 自然順ではなく、数字は文字比較
- 言語習慣の並びには非対応(ピンイン・五十音)
- 行を残すなら行の並べ替え
- 大小を無視するなら無視する並べ替え
よくある質問
大文字が小文字より前に並ぶのはなぜですか?
文字コードで比較するためです。大文字の符号は小文字より小さいので、Apple は apple より前になります。影響を消したい場合は、並べ替える前に全体を小文字にするか、大文字小文字を無視する行の並べ替えを使ってください。
10 が 9 より前になるのはなぜですか?
数字も 1 文字ずつ比較し、最初の文字で決まるためです。1 は 9 より小さいので 10 が先に来ます。数値順にしたい場合は 09 と 10 のように桁を揃えるか、数値として並べ替えるツールを使ってください。
元の改行はどこへ行ったのですか?
空白と改行で単語を分割し、出力時に半角スペースでつなぐため、複数行が 1 行になります。行の構造を残したい場合は、行の並べ替えツールを使ってください。
関連ツール:単語を並べ替え