Command Palette

Search for a command to run...

如何对文本行进行排序:按字母顺序、自然顺序和数字顺序解释

如何对文本行进行排序:按字母顺序、自然顺序和数字顺序解释

T
Toolz Team
|Sep 19, 2026|13 最小读数
Google 上的首选 Toolz.dev

文本工具集合的一部分

行分选路机

按字母、数字或长度对文本行进行排序,反转或改组它们,并删除重复项、空行和空白 - 所有这些都在浏览器中。

用行分选路机

对列表进行排序听起来像是计算中最容易解决的问题,直到结果回来 file10 上面 file2,每个大写的名字都堆在上面, $5 stranded在价格表的底部,而"苹果"和"苹果"算作两个不同的条目,每一个都是按照它被告知的方式来做的排序,麻烦的是"按字母顺序"隐藏了几个不同的规则,挑错一个会产生一个在技术上排序,实际上毫无用处的列表。

本指南解释了日常列表中重要的排序规则:字节顺序、区域设置感知字母顺序、嵌入数字的自然顺序、真实数字顺序和长度顺序。它还涵盖了修剪和删除重复项等清洁步骤如何与排序相互作用。工作示例使用 Toolz 行分类器并且显示的每个输出都是其代码产生的。

TL;博士: Toolz Line Sorter 中按字母顺序排列文本的行排序,每行粘贴一项并选择一种模式,按字母顺序排列是区域设置感知的自然的,因此 item2 之前 item10,和忽略情况(默认情况下)保持"苹果"和"苹果"在一起。数字模式按每行开始时的数字排序,并将非数字行沉入底部。长度模式按字符计数排序。排序前运行清理:修剪空格,掉落空白行,然后删除重复项,保留第一次出现。 在线线路分拣机 是客户端,免费,无注册,并随您键入更新。

行排序器做什么?

Line sorter 取一块文字,把每一行当作一个项目,用选定的规则重新排列行,同一个工具通常同时清理列表:修剪杂散空格、去除空白行和去除重复项。

Toolz 版本提供五种模式和四种清洁选项:

设置 它做什么 默认
A 到 Z 具有自然数字处理的具有区域感知的字母顺序 选
数字 每行开头的数字顺序
长度 按字符数排序,最短第一
反向 翻转当前行顺序而不进行排序
洗牌 随机顺序;再次单击以重新洗牌
下降 将 A 的结果翻转为 Z、数字或长度 关闭
删除空行 删除空白或仅空白的行 论
删除重复项 保留每行的第一个出现 关闭
修剪空格 删除每行两端的空格和选项卡 关闭
忽略案例 将行作为小写来比较以进行排序和重复 论

输出面板显示出多少行以及有多少行被删除,因此您可以一目了然地看到清洁选项的效果。

为什么 file10 先于 file2?

因为纯文本排序一次比较一个字符的字符串,从左侧开始。 file10 並 file2 匹配四个字符,则第五个字符是 1 在一个和 2 在另一个。角色 1 之前排序过 2如此 file10 wins,而比较从来没有看过10是比2更大的数字这一事实。

Natural sorting 通过将每轮数字读作数字来修复此问题。Toolz 行排序器's A 到 Z 模式执行此操作,使用浏览器's 内置整理,打开数字比较,描述的选项为 MDN 上的字符串.原型.localeCompare.下面的排序规则来自于 Unicode 整理算法的,这就是浏览器决定"é"在"e"附近排序的方式,而不是在"z"之后排序。

这是三个规则下相同的五项列表:

输入 字节顺序 (LC_ALL=C sort) 字符顺序,表壳折叠 自然顺序(工具 A 到 Z)
item10 Item1 Item1 Item1
item2 item10 item10 item2
Item1 item2 item2 item3
item3 item3 item3 item10
zebra zebra zebra zebra

字节顺序放置 Item1 首先只是因为大写 I 代码比任何小写字母都要低。带有大小写折叠的字符顺序固定大写,但仍然保留 item10 之前 item2.自然秩序两全其美。

Case如何影响字母排序?

Rair byte顺序,每个大写字母排序在每个小写字母之前,因此名称列表可以按字母顺序分为两个运行:所有大写的条目先进行,然后所有小写的Locale-aware排序则不这样做;它首先将字母视为同一个字母,仅使用大小写来打破联系。

Ignore case 选项更进一步,将所有内容都作为小写进行比较,当两行仅因大小写而异时,它们会以相等的方式进行比较,排序会按照它们在输入中出现的顺序保持重复,这很重要,下面将介绍。

使用内置示例的工作示例

击"加载样本"并且输入是十行: banana、 Apple、 cherry、 apple、 10、 2、 Banana、 date、空行,以及 grape。

设置 输出 显示计数
默认值:A 到 Z,忽略 case on,删除 on 上的空行 2, 10, Apple, apple, banana, Banana, cherry, date, grape 9条线,移除1条
添加 删除重复项 2, 10, Apple, banana, cherry, date, grape 7条线,移除3条
删除重复项,忽略大小写 2, 10, apple, Apple, banana, Banana, cherry, date, grape 9条线,移除1条
默认值加上降序 grape, date, cherry, Banana, banana, apple, Apple, 10, 2 9条线,移除1条

该表中可以看到三个细节。数字以字母顺序排列在字母之前,并且 2 先于 10 因为自然排序。随着忽略情况, Apple 保持领先 apple 因为它首先出现在输入中。在关闭 Ignore case 后,浏览器's 整理将小写形式放在大写形式的前面,这是英语浏览器中常见的行为,并且没有一行算作重复,因为它们不相同。下降是上升结果的完全反转,因此系线也会翻转。

按字母顺序与数字排序:您应该何时使用每个?

母(自然)模式,对于包含数字的文本,如文件名、版本标签或街道地址,当每行都是一个数字,或者以一开头,并且你想要按值排序的行时,使用数字模式。

数字模式按照 JavaScript's 的方式读取每行开头的数字 parseFloat does。tooks 跳过前导空格,读取一个可选符号、数字、小数点和一个指数,停在第一个不能继续数字的字符处,不以数字开头的行到底部,保持原来的顺序。

線 使用的价值 注
42 42绔 涔诲芥澶澧
-7.5 -7.5 负值和十进制值起作用
1e3 1000 阅读科学符号
12 apples 12绔 涔诲芥澶澧 数字被忽略后的文本
1,000 1 读取在逗号处停止
$5 不是数字 沉到底部
v2 不是数字 沉到底部

排序 $5、 42、 1,000、 -7.5、 12 apples、 1e3 在数字模式下给出:

-7.5
1,000
12 apples
42
1e3
$5

该输出中有两个陷阱。 1,000 1排序,因为数以千计的分隔符结束数字。先用 剥离它们 找到并替换 如果您的数据使用它们。和 $5 跌至谷底;在对价格进行排序之前删除货币符号。

数模降序反转整个结果,即非数列由下往上移动,若只想要数列降序,先将非数列清理干净。

按长度排序如何工作?

Length mode 按包含多少个字符来排序行,最短的在前,或者最长的在降序的在前,等长的行保持其输入顺序。

Count为JavaScript字符串长度, 计数UTF-16代码单位, 对于普通字母、数字和重音拉丁字符等于可见字符数: café is 4。表情符号和一些稀有字符大多使用两个代码单位,所以 ok👍 4算,而不是3。对于单词、名称或URL的列表,这很少很重要。

长度排序对于发现异常值非常方便:异常长的产品标题、截断的条目或列表中最短的关键字。

清洁和分类按什么顺序进行?

步总是按固定的顺序运行,顺序解释了最令人惊讶的结果:

  1. 分裂 输入行,接受 Unix 和 Windows 行结尾。
  2. 修剪 每行,如果 Trim 空格亮起。
  3. 删除空行,如果在。仅包含空格的行算作空白,即使有 Trim off。
  4. 删除重复项、如果开启。保留第一次出现。在忽略大小写的情况下,仅因大小写而异的行算作重复,第一个的大小写则存活下来。
  5. 排序、反转或洗牌 还剩下什么。

因为修剪是可选的,默认情况下是关闭的, apple 並 apple (带尾随空格)是比较重复时两条不同的线,除非你打开trim。那是最常见的原因a "删除重复"通过似乎错过了条目。从电子表格粘贴的选项卡会产生相同的效果。

对于较重的重复工作,例如保留最后一次出现或仅比较每行的一部分, 重复的除线器指南 更深入地涵盖选项。

反向与下降:有什么区别?

反向翻转行的当前顺序而不对任何内容进行排序。 c, a, b 变成 b, a, c.先降序后翻转,所以 c, a, b 在 A 到 Z 中,降序变为 c, b, a。

Reverse 当原始顺序表示某样东西时使用,例如最旧条目在前,并且您首先想要最新的日志文件 当您想要从 Z 到 A 或从大到小的排序列表时使用 Descending 在 Reverse 和 Shuffle 模式下禁用 Descending 按钮,因为它没有什么可翻转的。

洗牌够随机吗?

Shuffle使用费雪-耶茨算法,当它的随机数是均匀的时,它给每个可能的顺序一个相等的机会,它从浏览器中抽取这些数字's Math.random()。对阅读列表、播放列表或演示顺序进行随机化就可以了,它不是加密随机源,因此对于任何可能有人有理由预测或对结果提出异议的事情,例如抽奖,都是错误的选择,对于那些,专门的 列表随机化器 是更合身,再点击洗牌即可获得新订单。

在线对敏感列表进行排序安全吗?

有了这个工具,是的。排序和清理发生在客户端,在浏览器选项卡中的 JavaScript 中。文本不会上传或存储,并且一旦页面加载完毕,该工具就会与网络保持关闭状态。电子邮件地址、客户姓名或内部主机名的列表永远不会离开您的机器。

实用的大小限制是您的浏览器's内存而不是服务器帽,数万行在典型的笔记本电脑上立即排序,非常大的文件,在数百兆字节中,在命令行上处理得更好。

常见的行排序错误是什么?

症状 原因 修复
file10 上面 file2 在另一个工具中 简单的人物比较 使用自然排序(此处为 A 到 Z)或 sort -V
大写条目全部位于顶部 字节顺序排序 使用区域设置感知排序或忽略情况
未删除重复项 尾随空格或选项卡不同 打开修剪空格
"苹果"和"苹果"两者都保留了 忽略情况就结束了 打开忽略情况
1,000 1排序 千分隔符结束该数字 在数字排序之前删除逗号
价格与 $ 在底部 Line不是以数字开头的 首先剥离货币符号
数字列表的降序以单词开头 非数字线反转至顶部 首先删除非数字行
输出还有一个"已删除"比预期的要多 尾随换行符创建了空的最后一行 预期;空行被掉落

在线线路分拣机的替代方案

工具 如何排序 注释
GNU sort sort -f (折叠式机箱), sort -n (数字), sort -V (自然的), sort -u (独一无二), sort -r (反向的) 可编写脚本,处理庞大的文件;看到 GNU排序手册
shuf shuf list.txt 命令行上的随机顺序
按壳中的长度排序 awk '{ print length, $0 }' list.txt | sort -n | cut -d' ' -f2- 根据区域设置计算字节或字符
电子表格 粘贴到列中,数据,排序 当行有多个字段时就很好
代码编辑器 "排序行"许多编辑器中的命令 行为因编辑而异
Toolz 行分类器 粘贴,单击模式 实时预览,一次性清洁,客户端

注意 sort 输出取决于 LC_ALL 或 LANG locale 设置,这就是为什么同一个命令可以在两台机器上给出不同的命令。设置 LC_ALL=C 强制字节顺序。

逐步对列表进行排序

  1. 打开 文本行分类器 并粘贴您的列表,每行一项。
  2. 选择 A 到 Z 表示单词和文件名,选择数字表示数字,选择长度表示字符计数。
  3. 如果列表是从文档或电子表格粘贴的,请打开修剪空白。
  4. 如果您想每次输入一次,请打开删除重复项;留下"忽略情况"以合并不同的大写字母。
  5. 检查输出计数和"已删除"数字。
  6. 击复制。

如果列表还需要将其大写标准化,则 案例转换器指南 解释标题、句子和其他情况,以及 文本工具中心 将文本实用程序的其余部分收集到一个地方。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!