文本排序
一行一条,按你选的方式重新排序。
关于中文
中文排序交给浏览器原生的 localeCompare('zh-Hans-CN'),实测大致是拼音序(阿 < 波 < 李 < 钱 < 王)。但它不做全字库校准:多音字、生僻字和不同浏览器版本可能给出不同顺序。要固定顺序请用命令行 LC_ALL=C sort 或按 Unicode 码位比较。
什么时候用
- 关键词或域名清单要按字母顺序排好再贴进表格,里面还混着 file2、file10 这种带编号的行,希望数字按大小而不是字符顺序排时。
- 几份名单合并去重后想按长度排序,把短词放前面做标签或词云时。
什么时候不用
- 要按拼音或笔画严格排序(人名册、术语表):这里的中文顺序取决于浏览器内置的排序数据,不保证拼音,也没有笔画、部首选项。
- 要按 TSV/CSV 的某一列排序:本页比较整行、不解析列,请用命令行的 sort -t 或表格软件。
限制与隐私
排序、去重、打乱都在浏览器里完成,文本不上传。限制:只按整行处理,空行直接丢弃;字母序依赖浏览器的语言排序数据,跨浏览器可能不同;去重区分大小写且不去空白;随机用 Math.random,不适合抽奖这类需要公平随机的场景。
常见问题
中文是按拼音排序吗?
排序交给浏览器的 localeCompare(locale 用 zh-Hans-CN)。Chrome、Safari、Firefox 各自依赖内置的 ICU 数据,实测汉字大致按拼音排,但页面本身没有加载拼音字典,多音字、生僻字以及不同浏览器版本之间可能不一致。要完全固定的顺序,请用命令行 sort(LC_ALL=C 按字节)或脚本里按 Unicode 码位比较。
为什么 file2 排在 file10 前面?
字母/字符序模式带了 numeric:true,连续数字按数值比较,所以 file2 在 file10 之前;纯字符比较会得到相反结果('1' 小于 '2')。没有关闭自然序的开关,在意的话把编号补零成 file02、file10。
勾了去重,为什么 Apple 和 apple 都还在?
去重是 Set 的精确比较,区分大小写也不去首尾空白;排序比较才忽略大小写(sensitivity: 'base')。所以两行都能留下,只是排在一起。想按大小写不敏感去重,先用「文本去重」勾上忽略大小写,再回来排序。