文本处理

一份多行文本,勾几个选项就完成去重、排序、去空行、大小写转换和加行号——选项可以叠加。

输入(一行一条,逗号分隔的清单建议先替换成换行)
输出

      

选项怎么组合:固定顺序

选项按下面这条固定流水线依次执行,与勾选先后无关,所以同样的输入加同样的勾选一定得到同样的结果。这里最需要注意的是:去重排在大小写转换之前,所以要把 abc 和 ABC 合成一条,得同时勾「去重时忽略大小写」和转大写。

  1. 去行号:先剥掉已有的 12. 、12) 、12、 或 (12) 前缀,避免后面按内容排序时被行号带着走。点号后面紧跟数字的不算行号,所以 2024.05.01 和 3.14 会被原样保留。
  2. 去首尾空格:去掉每行两端的空格、Tab 和全角空格。它同时是去重和排序的比较基准。
  3. 去空行:删掉空字符串行。注意这一步在去首尾空格之后,所以「只有空格」的行也会被删掉。
  4. 去重:保留最先出现的一行;勾了忽略大小写就按小写比较。
  5. 排序:按 Unicode 码位升序或降序。
  6. 大小写转换:全大写 / 全小写 / 首字母大写。
  7. 加行号:按当前结果的行数补零对齐编号。
  8. 反转行序:最后一步,把整份结果倒过来。

需要注意的是去行号、去首尾空格、反转行序在没有其它选项时也会独立生效,可以单独当小工具用;而不勾任何选项时,输出就是原样输入。

去重的两个细节:大小写与首尾空格

绝大多数「去重没去干净」都是这两个开关没勾。默认只把逐字符完全相同的行算重复:abc 和 Abc 是两行,abc 和 abc (末尾一个空格)也是两行。从 CSV、Excel 或日志里粘出来的清单几乎一定混着这两种情况,所以建议先勾「去除首尾空格」,再按需要决定要不要勾「去重时忽略大小写」。另外,忽略大小写只影响比较过程,不会改写输出内容——想统一成一种写法,还要勾一个大小写转换。

常见的坑

常见问题

为什么去重后还是留下了我以为是重复的行?

默认去重区分大小写、也不忽略首尾空格。粘来的数据里往往混着开头空格和末尾空格,看起来一样其实字节不同。勾上「去除首尾空格」,必要时再勾「忽略大小写」。

多个选项的生效顺序是什么?

去行号 → 去首尾空格 → 去空行 → 去重 → 排序 → 大小写转换 → 加行号 → 反转行序。顺序固定,与勾选先后无关,所以结果可以复现。

排序是按拼音还是按字母?

按 Unicode 码位,也就是大小写敏感的字典序,大写排在小写之前。没有拼音排序,中文按码位排列。

去重时保留哪一行?

保留最先出现的那一行,并且输出的也是去掉首尾空格之后的内容。想反过来保留最后一行,可以先勾「反转行序」,处理完再反转一次。

处理大批量文本会不会卡?

去重和排序都是单次线性或 n log n 遍历,十万行级别在毫秒到几十毫秒之间。为防误操作,单次超过十万行或 5MB 会直接提示而不处理。

相关工具

文本对比逐行 diff,标出新增、删除与被修改的行 字数统计中英文分开统计字符、词、行、段落与阅读时长 URL 编解码encodeURIComponent 与 encodeURI 两种编码方式