Skip to content

按字母与自然顺序排序文本行

在浏览器里对文本行排序:按字母顺序、数字顺序(自然排序)或行长度,升序或降序皆可。免费在线行排序工具,100% 纯本地运行。还能去重、反转与清理列表。无需注册,数据不上传。

无追踪 浏览器中运行 免费
所有处理都在你的浏览器本地完成。不会向任何服务器发送数据。
排序
去重
清理
已审核自然排序正确性、locale 感知排序、大小写行为、确定性流水线顺序,以及准确的行数统计。 — Go Tools 工程团队 · 2026年7月13日

对文本行排序是什么意思?

对文本行排序,是指把一段按换行切分的文本、依照某条规则重排这些行——最常见的是字母(词典)顺序,也可以是数字顺序、长度或反转。它是开发者或写作者一天里最频繁的小任务之一:给一列名字排字母序、给 import 语句排序、整理从电子表格复制来的一列标签,或排列配置键以保持 diff 干净。

绊倒大家的微妙之处在于:默认情况下计算机是按字符编码排序字符串的,而不是按人的直觉。朴素排序会把 `item10` 放在 `item2` 之前,因为字符 `1` 的码点比 `2` 小。它还会把每个大写词推到小写词前面,所以 `Zebra` 会落在 `apple` 前。真实世界的列表很少想要这两种行为。本工具默认采用不区分大小写、locale 感知的排序,并提供一个把嵌入数字当作数字比较的「自然」方式——这两项设置让排序贴合人的预期。

排序与清理列表关系密切。你常常想同时排序并去重,或在同一趟里丢掉空行和多余空白。本工具把这些操作折进一个面板:排序、删除重复、修剪、删除空行、反转,甚至随机打乱。若以去重为主任务——并想控制保留首次或末次出现——请使用配套的删除重复行工具,它共用同一套引擎。要统计词数和行数,请用字数统计;要比较列表的两个版本,请用文本对比;要改变行的大小写,请用大小写转换

一切都完全在你的浏览器里进行、没有上传,所以给一个保密列表排序,就和打开一个文本编辑器一样私密。粘贴、选一个顺序、复制结果——整个往返只需几秒钟。

Input (unsorted):
  file10.txt
  file2.txt
  file1.txt

Alphabetical sort (naive):
  file1.txt
  file10.txt   ← wrong: 10 before 2
  file2.txt

Natural sort (numeric-aware):
  file1.txt
  file2.txt
  file10.txt   ← correct

核心特性

字母、自然与长度排序

三种排序方式覆盖每一种列表:字母词典序、让 `item2` 保持在 `item10` 之前(把数字当作数字比较)的自然排序,以及从短到长的按长度排序。每种都可升序或降序。

locale 感知排序

排序使用浏览器的 `Intl.Collator`,它遵循 Unicode 排序算法。带重音和非英文的字符会按你所用语言的读者预期排序——`é` 挨着 `e`,而不是被扔到字母表末尾。

默认不区分大小写

`Apple` 和 `apple` 会作为邻居排列,而不会让全大写的词跳到最前——这是人类列表的自然选择。当大写和小写必须区别对待时,打开「区分大小写」即可。

排序 + 去重一趟完成

打开「删除重复行」,一步得到干净、唯一、有序的列表。实时统计标记会精确报告合并了多少重复,让你信得过结果。

实时行数计数

统计标记随键入更新:`12 行 → 9 行 · 删除 3 个重复 · 删除 0 个空行`。不用猜工具是否真的改动了什么——你会立刻看到前后对比。

反转与随机打乱

「反转」在不重新排序的情况下翻转当前顺序;「随机打乱」用密码学 Fisher–Yates 洗牌随机化各行。一键随机化测验题、决定抽签顺序,或翻转一份更新记录。

清理开关

修剪每行、删除空行、添加行号,让面板功能更完整。把它们和排序组合起来,无需脚本就能把杂乱粘贴的一列变成整齐、可直接发布的输出。

100% 浏览器端隐私

你的文本永远不会离开页面——不上传、不记录、不分析你键入的内容。可安全用于保密列表、内部词表和敏感导出。你可以在 Network 面板自行验证:请求数为零。

文本行排序示例

字母顺序 A→Z

banana
apple
cherry
apple
banana
cherry

默认排序:升序、字母顺序、不区分大小写。对一个简单的单词列表按词典序排列——这是给一列名字、标签或关键词排序时最常见的用法。

降序 Z→A

apple
banana
cherry
cherry
banana
apple

把顺序设为降序即可反转字母方向。适合排行榜、最新在前的列表,或任何希望字母序末尾项排到最前的排名场景。

自然排序(数字感知)

item10
item2
item1
item1
item2
item10

自然排序会把嵌入的数字当作数字比较,所以 `item2` 保持在 `item10` 之前。朴素的字母排序会因为字符 `1` 排在 `2` 前而错误地把 `item10` 放到最前。处理文件名、版本号和带编号的行时不可或缺。

按长度排序

ccc
a
bb
a
bb
ccc

「按长度」方式会把行从最短到最长排列,长度相同时再按字母序打破平局。适合发现异常项、对齐定宽数据,或把标签列表从短到长排列。

不区分大小写排序

banana
Apple
apple
Apple
apple
banana

在「区分大小写」关闭(默认)时,`Apple` 和 `apple` 会作为邻居排列,而不会让全大写的词一律跳到最前。对人类可读的列表来说,这几乎总是你想要的效果。

排序并同时去重

dog
cat
dog
bird
cat
bird
cat
dog

在排序时打开「删除重复行」,一步得到干净、唯一、有序的列表。统计标记会报告 `5 行 → 3 行 · 删除 2 个重复`,让你能核对被合并掉的内容。

反转当前顺序

line one
line two
line three
line three
line two
line one

「反转顺序」会翻转最终列表而不做字母排序——它只是把现有序列颠倒过来。可与排序搭配得到降序结果,也可单独用于反转日志或更新记录。

打乱(随机化)列表

north
south
east
west
east
north
west
south

「随机打乱」使用浏览器的密码学 RNG(Fisher–Yates 算法)随机化行序。非常适合随机化测验题目、决定随机抽签顺序或抽样。每次切换它,输出都不一样。

如何对文本行排序

  1. 1

    粘贴或键入你的文本行

    把文本放进输入框。每个换行都被当作单独的一行。排序随键入即时进行——没有提交按钮。末尾的换行会被忽略,不会多出一个空行。

  2. 2

    选择顺序与方式

    把「顺序」设为升序(A→Z)或降序(Z→A),再选一种「方式」:单词用字母顺序,带数字的用自然顺序,或按长度。你一改设置,输出就即时更新。

  3. 3

    按需添加清理选项

    切换「删除重复行」「修剪每行」或「删除空行」,在排序时顺手整理列表。只在大写和小写必须区别对待时才打开「区分大小写」。

  4. 4

    查看统计标记

    标记会显示输入行数、输出行数,以及删除了多少重复或空行。在复制结果前用它确认工具做的和你预期的一致。

  5. 5

    复制排序结果

    点击「复制」把排序输出放进剪贴板。用「重置」清空两个框,或用「示例」载入一个供试验的范例列表。整个过程没有任何上传。

常见排序错误

对带编号的项做朴素字母排序

经典错误:对文件名或版本号做字母排序,结果 `10` 落在 `2` 前。解法是把方式切到「自然」,它会把嵌入的数字当作数字比较。带编号的列表排序后一定要检查——用错方式看着挺像那么回事,直到你注意到 `item10` 排在了 `item2` 上面。

✗ 错误
字母排序:
  release-1
  release-10
  release-2
✓ 正确
自然排序:
  release-1
  release-2
  release-10

区分大小写排序打散了人类列表

对一列名字保持「区分大小写」打开,会把每个大写条目推到小写前面,把本该是一段字母序的内容拆成两段。除非大小写有语义意义,否则请关闭它,让 `Apple` 和 `apricot` 挨在一起。

✗ 错误
区分大小写:
  Apple
  Banana
  apple
  banana
✓ 正确
不区分大小写:
  Apple
  apple
  Banana
  banana

空白破坏了排序

带尾随空格或制表符的行,与其被修剪过的孪生行排序不同,因为空白是字符串的一部分。如果两个看着相同的行分开了,请打开「修剪每行」在排序前去掉两侧空白。

✗ 错误
未修剪("apple " 对 "apple"):
  apple
  banana
  apple    ← 尾随空格,排序异常
✓ 正确
已修剪:
  apple
  apple
  banana

以为「反转」等于降序排序

「反转顺序」只是把当前序列颠倒——它不排序。如果列表本来没排过,反转给你的是输入的倒序,而不是 Z→A。要降序排序,请把「顺序」设为降序;「反转」只用来翻转一个已经有序的列表。

✗ 错误
对未排序输入反转:
  cat
  apple
  banana
→ banana / apple / cat(只是倒过来)
✓ 正确
降序排序:
  cat
  banana
  apple

文本行排序:常见用例

给名字、标签与关键词排字母序
粘贴从电子表格复制来的一列名字、标签或 SEO 关键词,得到干净的词典序。加上「删除重复行」,可在同一步内合并杂乱导出里的重复。
排序 import 语句与配置键
给一段 import 行或配置键排序,让它们保持规范顺序、未来的 diff 保持精简。自然排序会让带编号的项(`v1`、`v2`、`v10`)保持正确次序。
排序文件名与版本号
文件名和语义化版本是朴素排序败得最惨的地方——`v1.10` 排在 `v1.2` 前。自然排序会修正它,给你一份正确排序的列表,用于发布说明、清单或构建脚本。
整理安全词表
完全离线地排序并去重密码词表、子域名列表或模糊测试字典。因为没有任何上传,敏感的安全数据绝不会触及第三方服务器。
整理 CSV 列
从 CSV 里复制出单独一列,排序、去重,再贴回去。对一次性清理来说,这比电子表格公式更快,而实时计数会确认合并掉了多少行。
随机化抽签或测验顺序
用「随机打乱」为公平抽签随机化名字顺序、为测验随机化题目,或为盲审随机化条目。密码学 RNG 让随机性经得起推敲,而不是可预测的伪洗牌。
为干净的 diff 准备数据
在比较前用相同方式排序两个列表,能让 diff 反映真实内容变化,而不是顺序噪声。把本工具与文本对比搭配,能精确看出增删了什么。
反转日志与更新记录
用「反转顺序」翻转一份日志或更新记录,让最新条目排到最前(或最后),而不做字母重排。这是命令行 `tac` 管道的一键替代方案。

排序是如何工作的

行拆分(CRLF / LF / CR)
输入按 `\r\n`、`\r` 或 `\n` 拆分,因此从 Windows、Unix 或经典 Mac 来源粘贴的文本都能用。会先剥掉单个末尾行终止符,这样最后的换行就不会造出一个多余的空末行。
Intl.Collator 排序
字母与自然排序使用 `Intl.Collator(locale, { numeric, sensitivity })`。`numeric: true` 启用自然(数字感知)比较;开启「区分大小写」时 sensitivity 为 `variant`,否则为 `accent`(不区分大小写)。排序遵循 Unicode 排序算法。
自然排序语义
自然排序把连续的数字串当作整数来比较、而非逐字符,所以 `a2` < `a10`。它能处理行中任意位置嵌入的数字,这正是文件名和版本号能凭直觉而非词法排序的原因。
带平局打破的按长度排序
「按长度」方式按字符数升序排列各行,再用排序器打破平局,让等长的行仍落入稳定的字母序。降序会翻转最终方向。
确定性的流水线顺序
各项操作始终按固定顺序执行:修剪每行 → 删除空行 → 去重 → 排序或随机打乱 → 反转 → 添加行号。无论你如何组合这些开关,这都让输出可预测。
密码学随机打乱
随机打乱使用由 `crypto.getRandomValues` 播种的 Fisher–Yates 算法,给出均匀、不可预测的排列。它与排序互斥——启用随机打乱会完全绕过排序器。
稳定的浏览器内排序
JavaScript 的 `Array.prototype.sort` 在现代引擎中保证稳定,所以排序器认为相等的行会保持其原始相对顺序。对典型的列表规模,所有计算都在你浏览器的主线程完成,无需 worker 或网络调用。

排序最佳实践

任何带数字的内容都用自然排序
如果你的行里含有数字——文件名、版本号、发票 ID、编号步骤——请选「自然」方式。字母排序会把 `10` 放在 `2` 前面、悄悄打乱次序。自然排序是最重要、最该做对的一项设置,而启用它不花任何代价。
人类列表保持不区分大小写
对名字、标签和文字列表,保持「区分大小写」关闭,以免大写词跳到小写词前。只对像标识符这类大小写有意义、`ID` 与 `id` 确实不同的数据才打开它。
diff 之前用相同方式排序两个列表
比较两个列表时,先用相同设置各自排序。两个未排序列表的 diff 会被顺序变化主导;两个已排序列表的 diff 只显示真实的增删。把本工具与文本对比搭配,得到最干净的比较。
边排序边去重
如果列表可能含重复,请在同一趟里启用「删除重复行」,而不是先排序再用肉眼找重复。统计标记会告诉你合并了多少,让你不必怀疑列表是否真的唯一。
粘贴数据先修剪再排序
从电子表格、PDF 或终端复制的文本常带尾随空格,这会让本该相同的行分开排序或在去重中幸存。打开「修剪每行」在排序前规范空白,让顺序反映内容而非不可见字符。
公平很重要时用随机打乱的密码学 RNG
对抽签、抽样或任何可预测顺序可能被钻空子的场景,随机打乱的密码学随机性优于凭肉眼或基于 `Math.random` 的工具。想要新的顺序就再切换一次以重新洗牌。

常见问题

这个工具是做什么的?
它就在你的浏览器里对文本行进行排序——按字母顺序、自然(数字感知)顺序或行长度,升序或降序皆可。当你粘贴或键入时,排序结果会即时出现,并实时显示输入与输出的行数。你还能在同一趟处理里去重、反转、修剪、删除空行、添加行号或随机打乱。任何内容都不会上传:所有排序 100% 在 JavaScript 中于客户端完成,因此可安全用于保密列表、内部词表以及任何你不愿发往服务器的数据。你可以在浏览器 Network 面板自行确认——排序触发的网络请求数为零。
字母排序和自然排序有什么区别?
字母(词法)排序逐字符比较字符串,所以 `file10` 会排在 `file2` 之前——因为字符 `1`(U+0031)在 `2`(U+0032)之前。自然排序会识别连续的数字并把它们当作数字比较,因此 `file2` 会正确地排在 `file10` 之前。普通单词和代码用字母排序;任何带嵌入数字的内容用自然排序——文件名、版本号(`v1.2` 对 `v1.10`)、发票号和带编号的列表项。本工具用 `Intl.Collator({ numeric: true })` 实现自然排序,这是每个现代浏览器都内置的、基于标准的 Unicode 排序规则。
如何对一个列表按字母排序?
粘贴你的列表,保持默认的升序顺序与字母方式,各行会即时按字母顺序(A→Z)排列——在线给列表排字母序就这么简单。对名字、标签或关键词,请保持「区分大小写」关闭,让大写和小写条目一起排序,而不是分成两段。切到降序可得 Z→A,或打开「删除重复行」在一步内既排序又去重。一切都在你的浏览器里运行,因此即使是保密列表也能按字母排序而无需上传。
我的文本会被上传到任何地方吗?
不会。每一项操作——排序、去重、修剪、反转——都完全在你的浏览器里用 JavaScript 完成。你的文本永远不会被传输、永远不会保存在任何服务器、永远不会被记录、永远不会被分析。这让本工具可以放心用于保密列表、内部数据、安全词表,以及任何你不会粘进联网服务的内容。不会用 cookie 保存你的输入,也没有第三方分析捕获你键入的内容。打开浏览器开发者工具、盯着 Network 面板:给一个百万行的列表排序产生的请求数为零。
如何正确地对一列数字排序?
选择「自然」方式。朴素的字母排序会把数字当作文本,所以 `100` 会排在 `2` 之前(因为作为字符 `1` < `2`)。自然排序会比较数值,给出 `2`、`100` 的正确顺序。对于像 `chapter 2` 和 `chapter 12` 这类混合了文本与数字的行,自然排序也会通过数值比较 `2` 与 `12` 而排对。如果你的行是纯数字并且想要严格的数值排序,自然排序能处理整数以及混合字符串中的数字部分;对于小数密集的财务数据,请再核对前导零这类边界情况。
排序会考虑大写和小写吗?
默认不会——「区分大小写」是关闭的,所以 `Apple` 和 `apple` 在排序上被视为等价、会作为邻居排列。这是人类可读列表的自然选择:你很少想让所有大写词跳到小写词前面。打开「区分大小写」可得到严格排序,让大写字母排在小写字母之前(在排序器的变体敏感度内遵循 Unicode 码点顺序)。当去重选项启用时,大小写敏感也会影响去重:关闭时,`Foo` 和 `foo` 会被算作同一行。
我能同时排序并删除重复吗?
可以。在任意排序顺序旁启用「删除重复行」。本工具会先去重再排序,因此你可以在一步内得到干净、唯一、有序的列表——统计标记还会报告删除了多少重复。这是把杂乱粘贴的一列(比如带重复的邮箱或标签列表)整成整齐有序集合的最快方式。如果你需要带「保留首次/末次」控制的专门去重流程,请使用配套的删除重复行工具,它共用同一套引擎。
排序时空行会怎样处理?
默认情况下空行会被保留并排到顶部(空字符串会排在任何非空行之前)。如果不想要它们,请启用「删除空行」在排序前丢弃空行和只含空白的行——统计标记会计数删掉了多少。你输入末尾的单个换行(从文件或编辑器粘贴时很常见)会被当作行终止符,而非额外的空行,因此它不会抬高你的计数,也不会在输出里多出一个假空行。
带重音的字符和非英文字符是怎么排序的?
排序通过浏览器的 `Intl.Collator` 做到 locale 感知,它遵循 Unicode 排序算法。带重音的字母会按你所用语言的读者预期来排序——例如在大多数拉丁语言 locale 中,`é` 会排在 `e` 旁边,而不是排到字母表末尾。本工具使用页面语言进行排序,因此德语、法语、西班牙语及其他本地化版本会套用相应规则。这比朴素的码点排序正确得多,后者会把带重音和非 ASCII 的字符散落在意想不到的位置。
能排序的行数有上限吗?
工具本身不设硬性上限——它只受你浏览器内存以及你能舒服地粘进 textarea 的文本量限制。现代浏览器排序数万行是即时的,数十万行会略有停顿。因为一切都在本地运行、没有网络往返,大列表在这里往往比要上传数据的服务器端工具更快。对于真正巨大的文件(数百万行),命令行 `sort` 工具会更顺手,但对于日常列表、词表和导出数据,本工具轻松应对。
这和在 Excel 或代码编辑器里排序有什么不同?
电子表格是在网格内对单元格排序、常常会重排整行;本工具排序的是一维的行列表,这正是词表、配置值、import 语句或任何以换行分隔的数据所需要的。相比代码编辑器的「排序行」命令,本工具加入了自然(数字感知)排序、locale 感知排序、一键去重、按长度排序和实时计数——无需安装扩展。而且不像在线电子表格工具,没有任何东西离开你的浏览器。当你只是把一段文本放在剪贴板上时,这是最快的排序方式。
「随机打乱」选项做什么?
「随机打乱」使用由浏览器密码学随机数生成器(`crypto.getRandomValues`)驱动的 Fisher–Yates 洗牌来随机化行序,所以结果真正不可预测且每次都不同。它与排序互斥——你要么给行排序,要么随机化它们。常见用途包括随机化测验或抽认卡顺序、选择公平的抽签序列、抽样,或在人工审阅前给列表去偏。因为它用的是密码学 RNG 而不是 `Math.random`,所以在你需要经得起推敲的随机性时也适用。

大小写转换器 — UPPERCASE、lowercase、camelCase 一次搞定

文本处理

在浏览器里把文本一键转成 UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE 等共 15 种命名格式。免费、纯本地、无需注册。

Lorem Ipsum 生成器 — 免费占位文本工具

文本处理

即时生成 Lorem Ipsum 占位文本 — 按段落、句子、单词、字节或列表生成。可复制或下载为纯文本、HTML、Markdown 或 JSON。100% 免费、隐私、纯浏览器运行,无需注册。

免费正则表达式测试器 — 在线实时匹配与调试

文本处理

在浏览器里实时测试正则表达式:高亮匹配、捕获组、命名分组、替换预览、字符串切分与逐 token 解释,支持 JavaScript(ECMA-262)方言、g/i/m/s/u/y/d 七个 flag、ReDoS 超时保护。100% 本地运行、免费、无需注册。

在线从文本中删除重复行

文本处理

在线从文本中删除重复行——免费、即时、100% 在你的浏览器里完成。可忽略大小写或空白,保留首次或末次出现,并显示删除了多少重复行。还能排序与清理。无需注册。

URL Slug 生成器 — 一键把任意文本转成 slug

文本处理

在线把任意标题即时转成干净、利于 SEO 的 URL slug。可音译重音字符与西里尔字母,也可保留 Unicode 文字。100% 本地运行,数据不离开浏览器。

在线文本对比与差异工具

文本处理

在浏览器内即时对比两段文本。双栏并排展示、行内单词级高亮、统一 diff 补丁导出,支持忽略大小写、空白与空行。100% 本地浏览器处理,无需上传,文本不离开你的设备。