文本排序完全指南:按行排序、字母数字长度、去重与中文拼音笔画
讲清文本行排序的每一种模式:字母序和数字序到底差在哪、升降序怎么选、去重和大小写敏感如何配,以及中文按拼音和笔画排序的真实做法和坑。
文本排序完全指南:按行排序、字母数字长度、去重与中文拼音笔画
我整理报名名单和日志的时候,最常被坑的不是排序本身,而是「排出来的顺序跟我以为的不一样」。一份纯数字的列表,字母排序会把「100」塞到「2」前面;一份中英混排的清单,你以为按拼音排,结果汉字按码点走。把这几种模式弄清楚,排序才真正帮上忙。这篇就把按行排序的每一档讲透,你可以边读边用 /zh/t/text-sorter/ 跟着试。
排序的基本单位是「行」
文本排序工具处理的不是字符,是整行。每一个换行符切一行,工具对这些行重新排列,行内的内容一个字都不动。所以排序前先想清楚:你的数据是不是一行一个条目。如果是带缩进的 YAML 或代码块,排序只会移动整行,嵌套结构会被打乱,这种情况别直接排,先抽成扁平的值列表。
字母序 vs 数字序:最容易踩的那个坑
这是最该先弄明白的区别。字母序(字典序)把每一行当字符串,从左到右一个字符一个字符比码点;数字序把整行解析成数值再比大小。
看一组真实的状态码:
输入(乱序):
500
2
100
10
404
字母序输出:
10
100
2
404
500
数字序输出:
2
10
100
404
500
字母序里「10」和「100」都排到了「2」前面,因为比较从第一个字符开始,「1」的码点小于「2」,后面的位数根本没看。规律很简单:只要每一行都是数字,价格、ID、错误码这类,就用数字排序;只要有非纯数字的文本,就用字母排序。
升序和降序
字母序的升序是 A 到 Z,降序是 Z 到 A;数字序的升序是从小到大,降序反过来。降序最常用的一个场景是「找最大的几个」。比如按长度降序排,最长的行直接浮到顶上,排查超长配置值时一眼就能定位,不用从头数到尾。
倒序:不是排序,是翻面
倒序和升降序不是一回事。升降序是按某个规则重新排列,倒序只是把现有顺序整个翻过来。最典型的是更新日志:你从下往上写,最旧的在第一行,整段粘进来点倒序,最新一版就落到最上面,正好是读者期待的顺序。这里用倒序而不是按日期排,反而更稳,省得「2026-01」和「2026-1」这种格式不一致排错。
去重和去空白:排序的两个搭档
去重在排序后特别顺手。把 200 个报名名字按 A-Z 排好,再勾上去重,重复报名的人会聚到一起被自动去掉,一分钟得到一份干净名单。如果你的需求就是「只去重不排序」,那用 /zh/t/text-deduplicator/ 更专一。
去空白解决的是另一个隐形问题:带尾随空格的行跟不带的会排到不同位置。行首缩进默认也算进内容,所以「 苹果」会排在「苹果」前面,因为空格的码点更小。勾上去空白后,看起来相同的行就一致了。
大小写敏感
默认按码点比较时,大写字母排在小写前面。大写 Z 的码点是 90,小写 a 是 97,所以「Zebra」会排在「apple」前面,这往往不是你要的。关掉区分大小写,才能拿到 apple、Zebra 这种符合直觉的顺序。需要严格区分版本号或代号大小写时,再把它打开。
中文怎么排:拼音和笔画
中文排序比英文多一层。汉字按 Unicode 码点排时,常用字大致跟拼音一致,但并不严格等于拼音字典序,生僻字和异体字会偏。真正按拼音排,需要工具用浏览器的 Intl.Collator 做 locale 敏感比较,把「啊、波、词」这类按声母韵母归位;按笔画排则是另一套规则,先比笔画数再比起笔,常见于名单和目录。如果你的清单是中英混排,先想清楚你要的是拼音序还是码点序,两者在生僻字上会有差别,排完扫一眼边界值最保险。
排完先扫一眼边界
我自己的习惯是排完不急着用,先看最上面几行和最下面几行。空行在 A-Z 排序里会聚到最顶上;数字里有负号或小数会暴露解析问题;中文里夹了个英文词会落到意想不到的位置。这几个边界一扫,基本就能确认排序模式选对了。把字母序、数字序、去重、大小写这四个开关配合好,绝大多数列表整理都能在浏览器里本地搞定,不上传、不写公式。
Made by Toolora · Updated 2026-06-13