跳至内容

免费列表排序器 - 在线按字母和数字排序

按字母顺序(A到Z)或按数字大小对任意列表进行排序,支持升序和降序两种方式自由切换,可一键删除重复项,并将排序结果导出为纯文本或JSON格式文件。免费在线工具,浏览器端即时处理无需安装任何软件,适用于整理姓名清单、数字序列、代码数据以及各类需要排序去重的文本列表整理工作。

列表排序器

已排序列表

可视化

加载计算器...
📚

文档

列表排序器

列表排序器是一种工具,可接收由指定字符分隔的一段文本项目,并将其排序。它可以按字母或数字对列表排序,删除重复项,并以纯文本或 JSON 格式输出结果。

如何在线对列表排序

  1. 在输入框中输入或粘贴列表。
  2. 设置分隔符,即分隔相邻项目的字符。默认值为逗号。
  3. 选择排序类型:单词选择按字母排序,数字选择按数值排序。
  4. 选择排序顺序:升序或降序。
  5. 如果应删除重复项目,请开启“删除重复项”。
  6. 选择输出格式:文本或 JSON。
  7. 复制结果。

字母排序的工作方式

字母顺序模式把各项当作文本进行比较,使用的是区域设置感知的字符串比较,而不是原始字符编码的比较。这会先按字母对单词分组,因此能正确处理带重音的字符:“Zürich”和“São Paulo”会排在熟练读者所预期的位置。

大小写被视为次要规则。只有大小写不同的两个单词(如“apple”和“Apple”)会被归在一起,并将小写形式放在前面。以这种方式排序的数字会按文本逐位比较,因此“10”会排在“2”之前:会先比较字符“1”,而不会比较到“2”。

**示例。**输入:banana, apple, cherry, apple,分隔符 ,,升序,去除重复项。

  • 去掉重复的“apple”之后:banana, apple, cherry
  • 升序排序后:apple, banana, cherry

数值排序的工作方式

数值模式会将每个项目转换为数字并直接比较数值,因此“2”会排在“10”之前。列表中的每个项目都会先经过检查。如果哪怕只有一个项目无法读取为数字,工具也不会对列表进行排序,而是显示错误且不生成结果。即使长列表中只有一个项目无效,也同样如此。

**示例。**输入:10, 2, 33, 4,升序。

  • 升序排序后:2, 4, 10, 33
  • 降序排序后:33, 10, 4, 2

**错误情形示例。**输入:10, apple, 3,数值模式。

  • 结果:不返回列表。由于“apple”无法转换为数字,工具会报告“无效的数值输入”。

要对混合字母和数字的列表排序,请改用字母模式。

删除重复项

“删除重复项”选项会保留每个项目第一次出现的内容,并丢弃其余重复项。它会将项目作为完全相同的文本进行比较,因此区分大小写:“Apple”和“apple”会被视为不同的项目,除非先将列表转换为小写,否则两者都会保留。

分隔符

分隔符告诉工具一个项目在哪里结束、下一个项目在哪里开始。分隔符不限于单个字符,可以使用任意文本。常见选择包括:

  • 逗号(,),用于从电子表格或 CSV 文件复制的数据
  • 分号(;),用于本身已包含逗号的列表
  • 单个空格,用于较短的单词列表

分隔符框是单行字段,因此不能输入换行符作为分隔符。每行一项的列表应先转换为逗号分隔的形式。

如果排序后的输出看起来像一个很长的单项而不是列表,通常是分隔符与输入不匹配。

JSON 输出

选择 JSON 输出会把排序后的列表包装成 JSON 数组,每项一个字符串,例如 ["apple", "banana", "cherry"]。每个条目都写成带引号的字符串,即使在数值模式下也是如此:按数值排序 10, 2 并导出为 JSON,得到的是 ["2", "10"],而不是数字 2 和 10。需要实际数值的程序应在导入后转换这些字符串。

列表排序器的用途

字母排序适用于联系人姓名、产品代码和参考文献条目;许多引文格式要求参考文献按作者姓氏排序。数值排序适用于价格、分数和测量值。删除重复项有助于清理从多个来源复制数据后形成的列表,例如合并的电子表格或导出的联系人列表。

对于非常大的数据集,带索引列的数据库或电子表格的内置排序功能通常比基于浏览器的工具性能更好。如果需要在自动化流程中反复排序同一个文件,命令行工具或脚本比网页更合适。

关于排序算法的简要说明

对一个短列表排序和对一个有一百万项的列表排序,归根结底是同一个思路:比较成对的项并按顺序排列。高效的算法无需比较每一种可能的配对。JavaScript 内置的 Array.prototype.sort(许多基于浏览器的排序工具都依赖它)在 V8 中使用 Timsort,该引擎是 Chrome 和 Node.js 背后的核心。Timsort 是归并排序和插入排序的混合算法,由 Tim Peters 于 2002 年为 Python 编写。其他浏览器使用不同的稳定排序算法;JavaScript 规范要求结果是稳定的,即比较结果相等的项保持其原有的相对顺序,但并不要求使用某种特定的算法。

常见问题

如何在线按字母顺序对列表排序? 将列表粘贴到输入框中,选择“字母顺序”作为排序类型,再选择升序(A 到 Z)或降序(Z 到 A)。排序后的列表会立即显示。

我的数值排序为什么失败了? 只要有任何一项不是有效数字,数值模式就会拒绝整个列表,而不是跳过有问题的项。请检查列表中是否有多余的字母、货币符号或多余的空格并将其删除,或者如果列表本应包含文本,请切换到字母顺序模式。

排序时,该工具会把大写和小写字母视为相同吗? 就排序而言,会:“apple”和“Apple”会被排在相邻的位置。就去除重复项而言,不会:除非先把列表转换为同一种大小写,否则它们会被视为两个不同的项。

应该使用什么分隔符? 任何与列表实际分隔方式相符的字符或短字符串:CSV 风格的数据用逗号,如果各项内部已经含有逗号,则用分号。不能使用换行符,因为分隔符字段只接受单行内容。

可以把排序后的列表导出为 JSON 吗? 可以导出。JSON 输出是按排序顺序排列的带引号字符串数组,例如数值排序之后为 ["2", "4", "10"]。值不会被转换为原生的 JSON 数字。

可以排序的项数有上限吗? 该工具在浏览器中运行,因此非常大的列表(数万项或更多)可能会变慢,或占用过多可用内存,具体取决于设备。对于这种规模,数据库或脚本是更可靠的选择。

参考文献

  1. MDN Web 文档。String.prototype.localeCompare()。developer.mozilla.org — 按排序顺序对字符串进行区域设置感知的比较。
  2. V8 项目。Getting things sorted in V8。v8.dev — V8 使用 Timsort 实现 Array.prototype.sort,Timsort 由 Tim Peters 于 2002 年为 Python 开发。
  3. MDN Web 文档。Array.prototype.sort()。developer.mozilla.org — 自 ECMAScript 2019 起,规范要求使用稳定排序。