排序与去重
在浏览器里排序、去重、随机打乱文字行,中文支持笔画与拼音排序。
在你的浏览器中运行
请粘贴一些内容。
中文不能用码位排序
这是大多数行排序工具做错的地方,而且在你拿它处理中文之前完全看不出来。
一般的排序是照 Unicode 码位比对字符串。对中文来说,那会产生一个没有任何读者认得的顺序——它 既不是笔画、不是拼音、不是部首,也不是任何字典使用的排法。它就只是那些字当初被编号的顺序。
所以这里的排序方式是一个明确的选择,而且会标示在结果下方:
- 笔画——繁体中文索引最常用的排法,也是台湾和香港列出姓名的方式。
- 拼音——依国语读音的字母顺序,是中国大陆的惯例,也是大多数简体字典的编排方式。
- 码位顺序——保留下来,因为那就是一般排序的结果,而看见这个差别正是重点。
两种都说得通、结果却不同的排序,正是一个工具必须说清楚自己用了哪一种的时候。
数字用自然排序
默认会把 item2 排在 item10 前面。一般的字符串排序刚好相反,因为逐字比对时 1 排在 2 前面
——而那几乎不会是任何人排序文件或版本号时想要的结果。
去重时保留第一次出现的那笔
顺序本身就是信息。移除后面的重复项会保留原本顺序所带的意义,而保留最后一笔则会悄悄把顺序打乱。
默认不分大小写,因为在姓名、标签或域名的清单里,Apple 和 apple 通常是同一笔。当大小写
真的有意义时再打开它——识别码、密码、base64 之类。
去除前后空白是另一个选项,而且默认开启:在任何人实际会贴进来的清单里, apple 和 apple 都是
同一项,而多出来的结尾空白正是重复项没被抓到的最常见原因。
随机打乱用的是真正的乱数
Fisher–Yates 算法,乱数来自平台的密码学安全产生器而不是 Math.random。对一份名单来说这有点
过头,但它不花任何代价,而且结果是真正无偏的——用 sort(() => Math.random() - 0.5) 做的简易
打乱并不是,而且会产生肉眼看得出偏斜的顺序。
没有任何上传
在这个页面里排序。贴进排序工具的清单,常常是电子邮件地址、客户姓名或内部主机名称。