跳到正文

行排序与打乱

Line Sorter & Shuffler

按字母、数字或长度排序,也可以随机打乱,支持倒序和大小写选项。

给一列文本行排序,排序规则写明而不是默认:含数字的用自然排序,韩文用가나다顺序,按指定语言的规则,按原始码点,按长度,或者真正的随机打乱。同一份列表,每种规则给出的答案都不一样。

🔒 完全在你的浏览器里运行sortlinesshuffle

行

排序

依据

把数字段落当成数来比较,所以 file9 排在 file10 前面。

排序结果

行数

6

怎么用

  1. 先选排序模式

    文件名和版本号用自然排序,韩文名字用가나다,中文名字用语言模式并填 zh-CN,只有在你确实要 Array.sort 那种机器顺序时才选码点。

  2. 设定方向和大小写规则

    默认不区分大小写。区分大小写会把所有大写字母排在所有小写字母前面,名字列表很少需要这样。

  3. 需要随机时用打乱

    打乱用的是 Fisher–Yates,不是随机比较函数。随机比较函数是错误打乱法的经典案例:有偏差,而且不同引擎给出的分布不同。

常见问题

file10 为什么排在 file9 前面?

这是码点顺序——逐个字符比较时"1"在"9"前面。切换到自然排序,它把连续数字当作数值比较,file9 就会在前。

我的韩文列表排得很奇怪

两个原因。从 Mac 复制的韩文以分解形式存储,会排在所有合成音节前面;码点顺序把拉丁字母放在韩文前面,而韩文惯例是放在后面。가나다模式两个都解决。汉字没有分解形式,中文列表不会遇到第一个问题。

语言模式有什么不同?

它使用那种语言自己的排序表——瑞典语把 å 放在 z 后面,德语对 ä 有两种惯例,捷克语把 ch 当一个字母。填 zh-CN 时用的是 ICU 的中文排序规则,汉字按拼音顺序排列。如果这些都与你的列表无关,自然排序是更好的默认值。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。