ソートの注意メモ
テキストをソートするとき、漢数字などが直感に反するというのはある程度意識にあるが、 実は超基本的な半角アスキー文字群の順番もかなり変なことになっていて時々罠にはまるので、 備忘のためメモ。
一般的にどうかは分からないが、自分はゆるふわに「記号→数字→英大文字→英小文字」の順になっているような気がしている。 しかし、実際にはアスキーコード部分(0x01~0x7F)の並びは以下の様になっている。
16進コード | 種別 | 文字 |
---|---|---|
01 - 1F | 制御コード | |
20 | スペース | |
21 - 2F | 記号群1 | ! " # $ % & ' ( ) * + , - . / |
30 - 39 | 数字 | 0 1 2 3 4 5 6 7 8 9 |
3A - 40 | 記号群2 | : ; < = > ? @ |
41 - 5A | 英大文字 | A - Z |
5B - 60 | 記号群3 | [ \ ] ^ _ ` |
61 - 7A | 英小文字 | a - z |
7B - 7E | 記号群4 | { | } ~ |
注意しなければならないのは、こんな部分。
@
や;
などは数字よりも後- 英大文字と英小文字は連続しておらず、間に記号がいくつか入る
_
は英大文字より後だが英小文字よりは前!- カッコが支離滅裂で、
()
→ 数字 →<>
→ 英大文字 →[]
→ 英小文字 →{}
echo '0 9 A Z _ a z ! # @ ( [ {' | tr ' ' '\n' | sort#シェル芸
— ot2sy39 (@ot2sy39) 2018年3月13日
!
— シェル芸bot (@minyoruminyon) 2018年3月13日
#
(
0
9
@
A
Z
[
_
a
z
{ https://t.co/rJ296JfWM4
特に@
と_
が罠過ぎると思う。