文本排序Text Sort
一键对文本按字母 / 数字 / 拼音排序,支持升序、降序与随机打乱,配合四种分隔粒度,整理名单、数据列、清单更快。数据全程不上传。
工具介绍
3 段详细说明文本排序是一键整理顺序的文本处理工具,支持字母 A→Z、字母 Z→A、数字 1→9、数字 9→1、随机打乱五种排序方式。名单、编号、价格列、待办清单直接粘贴进来,一键得到有序结果。
所有计算都在浏览器内存中完成,文本不上传任何服务器。基于原生 Intl.Collator 与 Array.prototype.sort(稳定排序):英文按字典序、中文按拼音、数字按数值自然排序,10 万行以内瞬时完成。
配套四个实用能力:按行 / 逗号 / 空格 / 分号四种分隔粒度,以及忽略大小写、去首尾空白、跳过空行三个开关。支持 ⌘+↵ 快捷键执行、复制一键带走。
基础知识 · 排序原理
Intl.Collator · O(n log n)文本排序的本质是确定条目之间的先后关系:给定一个「比较规则」,把所有条目排成有序序列。理解以下 6 个核心概念,就能预判任何排序结果:
Intl.Collator本地化比较器Intl.Collator 实现,按语言习惯比较字符串:一次构建、全程复用,比反复调用 localeCompare 快数倍,10 万行排序也无压力。pinyin拼音排序numeric自然数字排序numeric: true:把字符串里的连续数字当作数值比较,"2" < "10"(纯字典序会把 "10" 排在 "2" 前面),"file2" < "file10" 同理正确。stable sort稳定排序Array.prototype.sort 自 ES2019 起保证稳定排序:比较结果相同的条目保持原始先后顺序。降序用反转比较器 compare(b, a) 实现(而非 reverse()),同样不打乱同级顺序。Fisher-Yates公平洗牌Fisher-Yates 从后往前,每步把第 i 项与随机 j ∈ [0, i] 交换,每个排列等概率 1/n!。sort(() => Math.random() - 0.5) 有统计偏差,不采用。compare key比较键与输出coll = new Intl.Collator("zh-Hans-CN", { numeric, sensitivity }) —— 一次构建,全程复用。arr.sort((a, b) => coll.compare(a, b));降序用 coll.compare(b, a) 反转比较器,保持稳定。for i = n-1 → 1,swap(arr[i], arr[rand(0, i)]),每个排列等概率。O(n log n) + 空间 O(n),n 为条目数;1 MB 文本(约 3 万行)通常 < 200ms。使用说明
4 步快速入门使用场景
5 个真实案例班级、公司通讯录按姓氏拼音 A→Z 排列,中英文名混排也能一次理顺,开启去首尾空白清理粘贴残留。
价格、分数、编号列按数字 1→9 / 9→1 排序,"10" 正确排在 "2" 后面,不会被字典序坑。
点名顺序、抽奖名单、测试用例执行顺序随机化,Fisher-Yates 算法保证每个排列等概率出现。
file2 与 file10、第2章 与 第10章 这类编号按自然数字顺序排列,数字模式自动识别数字段。
先去重再排序,得到一份干净且有序的名单;两步都在浏览器本地完成,适合清洗导出的数据列。
常见问题
10 个问答文本排序是什么?有什么用?
把一组文本按规则重新排列:字母序、数字序或随机顺序。常用于名单按拼音排序、数字列按大小排、随机抽签、编号自然排序等场景,省去在 Excel 里手动排序的麻烦。
我的文本会上传到服务器吗?
不会。所有排序计算在浏览器内存中完成,输入内容不上传任何服务器。可断网使用、关闭网络后再打开仍能正常使用。
支持多大的文本?
建议 ≤ 10 MB。基于 Intl.Collator 的排序时间复杂度 O(n log n),10 万行以内瞬时完成;构建一次 Collator 全程复用,无重复开销。
中文按什么顺序排?
按拼音排(中文语言习惯的排序规则):「苹果(píng)」排在「香蕉(xiāng)」前面。中英数字混排时整体顺序为:数字 → 中文(拼音)→ 英文(字母表),各浏览器遵循同一 ICU 语言规则,结果一致。
数字排序和字母排序有什么区别?
字母排序逐字符比较字典序,"10" 会排在 "2" 前面;数字排序开启 numeric 自然排序,按数值大小比较,"2" < "10","file2" < "file10"、"第2章" < "第10章" 都能正确排列。
排序是稳定的吗?相同的条目会乱序吗?
稳定。Array.prototype.sort 自 ES2019 起保证稳定排序,比较结果相同的条目保持原始先后顺序;降序用反转比较器实现(而非 reverse),同样稳定。
随机打乱公平吗?每次点都会变吗?
公平。采用 Fisher-Yates 洗牌算法从后往前交换,每个排列出现的概率严格相等(1/n!)。点击「排序」或再次点击「随机」都会重新打乱,不满意可以多点几次。
"忽略大小写""去首尾空白""跳过空行"分别做什么?
忽略大小写:"apple" 与 "Apple" 视为同级,按大小写不敏感的规则排先后;去首尾空白:清除每条前后的空格、制表符后再比较和输出;跳过空行:直接丢弃空条目,不进入排序结果。
与 Excel 的排序有什么区别?
Excel 需要打开文件、导入数据、选列排序再导出;本工具粘贴即用、秒级完成,支持分隔符与大小写等细粒度控制,适合临时、轻量的文本整理场景。
输出结果可以一键复制吗?
可以。点击「复制」按钮即可把排序结果复制到剪贴板,按行模式输出多行文本,其他模式以对应分隔符连接,可直接粘贴回 Excel、文档或代码。
相关工具
文本分类数据来源
隐私优先Intl.Collator 与 Array.prototype.sort(ES2019+ 稳定排序),随机模式用 Fisher-Yates 洗牌。无任何第三方依赖、无 WASM、无 polyfill。