自然順

辞書順と数字の大きさ順を組み合わせた,人間に優しい並び換え順序

自然順(自然な並び換え順序,: Natural sort order)とは,アルファベット順を基本として,複数桁の数字をまとめて一つの数値として扱って順序付けられるような照合規則である。 自然順は,計算機指向の純粋なアルファベット順よりも人間に優しい(〝自然な〟)順序として主に末端利用者向けの出力形式において推奨されている[1]

編集

例として,文字列“z2”と“z11”の並び順を考える。 アルファベット順の照合規則において,“1”は“2”より前であるとして並べられる為に, “z2”は“z11”の後に並び換えられる。 一方で自然順において,“2”は“11”より小さい数字である為に,“z2”は“z11”の前に並び換えられる。

アルファベット順

  1. z11
  2. z2

自然順

  1. z2
  2. z11

自然順のソートを提供する主な言語・ライブラリ編集

多くのプログラミング言語やライブラリに,自然順による並び換え機能が組み込まれている。 特に標準(又は規格として)で自然順照合が提供されているものに関しては言語・ライブラリ名の先頭に赤色アポストロフィ*を附加した。

*Win32 API
Windows XP及びWindows Server 2003以降のWin32 APIではStrCmpLogicalW函数が利用できる[2]
Perl(モジュール)
Perl 5ではSort::Naturallyモジュールが提供するnsort()函数を用いて配列の各要素を自然順に照合できる[3]
use Sort::Naturally;

@narr = nsort(qw(test01.txt test1.txt test10.txt test3.txt));

print join(' ', @narr);
*PHP
PHP 4, PHP 5, PHP 7ではnatsort()函数を用いて配列の各要素を自然順に照合できる[4]
<?php
$narr = array("test01.txt", "test1.txt", "test10.txt", "test3.txt");

natsort($narr);
print_r($narr);
?>
Python(パッケージ)
Python 2, Python 3ではnatsortパッケージを利用して自然順の照合ができる[5]
from natsort import natsorted

narr = ['test01.txt', 'test1.txt', 'test10.txt', 'test3.txt']
natsorted(narr)
print(narr)

脚注編集

[脚注の使い方]

出典編集

参考文献編集

実装

外部リンク編集

  • Online Alphabetizer Tool - オンラインで種々の照合規則を実行できるWebサービス。「Sort Natural」ボタンが自然順,「Sort Alphabetically」ボタンが(自然順が数字以外の照合の際に基本とする)アルファベット順の並び換え。