文本批量处理

粘贴一批文本,勾选要做的处理,一次完成去重、排序、转换与替换。

工具操作区

勾选要执行的处理。处理不按勾选框的排列顺序,而是按「先统一格式(去首尾空格 / 压缩空格 / 删行号 / 全角半角)→ 再去空行与去重 → 再排序与大小写 → 最后正则替换」执行,这样勾了「去重」就真的能去掉 张三 与 张三 这类只差空格的重复行。实际执行顺序会写在结果里。

正则按 JavaScript 语法,自动加 g 标志做全局替换;不写查找内容则跳过这一步。

粘贴文本后选择要做的处理,点「开始处理」。

这些处理到底做了什么(点开看)
  • 去重:两行内容完全一样(区分大小写与空格)时只留第一次出现的那行。
  • 去空行:整行只有空格或制表符的,直接删掉。
  • 去首尾空格:每行开头结尾的空白去掉,行中间的不动。
  • 压缩连续空格:行内连续多个空格或制表符压成一个空格 —— 从 Word、PDF、网页复制文本时最常见的问题就是这里夹带了一堆空格。
  • 排序:中文用 localeCompare(b, 'zh-CN') 按拼音排, 不是按 Unicode 码位排(按码位排中文是不按拼音的,这一点常被忽略)。
  • 全角转半角:字符码 0xFF01~0xFF5E 减 0xFEE0;全角空格 0x3000 换成普通空格。
  • 半角转全角:字符码 0x21~0x7E 加 0xFEE0;普通空格换成全角空格 0x3000。
  • 删除行号:去掉行首形如 1. 、2、、3)、 4] 的编号,方便把两批编号不同的名单合并。
  • 正则替换:按 JavaScript 正则全局替换。写法不合法会给出提示, 不会把页面弄崩。

想删掉所有数字?正则填 [0-9]+,替换留空。 想把多个空格统一成一个?用「压缩连续空格」更省事,不必自己写正则。

全部处理在浏览器本地完成,不上传任何文本;关掉页面后内容不会留在任何服务器上。 处理结果只影响下方输出框,原文本不会被改动,不满意可以改完勾选再点一次。

使用说明

这个工具解决什么问题

从教务系统导出的名单、从网页复制的表格、从 Excel 粘出来的数据,格式往往很乱:有重复行、有空行、每行前后带空格、全角和半角混在一起。手工处理几十行还能忍,几百行就不现实了。

这个工具把这些操作做成可勾选的步骤,一次跑完。你只需要粘贴文本、勾选要做的处理、点一下按钮。

各个处理项是什么意思

下面每一项都可以单独勾选,也可以组合使用。不熟悉的话建议先只勾一两个看效果,再逐步叠加。

  • 去重 —— 删除内容完全相同的行,保留第一次出现的。注意是整行完全相同,不是模糊匹配。
  • 去空行 —— 删除只有空格或制表符的行。
  • 去首尾空格 —— 每行前后的空格删掉。从网页复制时经常带上。
  • 压缩连续空格 —— 把行内连续的多个空格或制表符压成一个,去掉排版用的多余空白。
  • 排序 —— 支持升序与降序。中文按拼音顺序排,不是按笔画或编码。
  • 大小写 —— 转大写、转小写、或首字母大写(常用于整理英文名单)。
  • 全角转半角 / 半角转全角 —— 处理输入法造成的全角数字、字母和标点。比如全角的「123ABC」转成半角「123ABC」。
  • 删除行号 —— 去掉行首的「1. 」「2、」「3) 」这类编号,方便重新编号或导入其它系统。
  • 正则替换 —— 用正则表达式批量替换。这是最灵活也最容易出错的一项,下面单独说明。

关于正则替换

正则替换的用法是:在「查找」里填正则表达式,在「替换为」里填替换内容。工具会用全局模式(相当于加了 `g` 标志)执行,也就是替换所有匹配项而不是只替换第一个。

几个实用例子:删除所有数字,查找填 `[0-9]+`,替换留空;把多个空格换成一个,查找填 ` +`(加号表示一个或多个空格),替换填一个空格;删除括号及其内容,查找填 `([^)]*)`,替换留空。

如果正则写得不对,工具会给出提示而不是报错崩溃。常见错误是括号没有成对、或者用了特殊字符却没有转义(比如想匹配点号本身要写 `.` 而不是 `.`)。

常见问题

处理后的文本会上传到服务器吗?

不会。全部处理都在你的浏览器里用 JavaScript 完成,文本不会发送到任何服务器。你可以断网使用,也可以在浏览器开发者工具的网络面板里确认没有任何请求发出。这一点对处理包含姓名、学号、成绩的名单尤其重要。

去重是删除完全相同的行吗?会不会误删?

是按整行内容完全匹配去重,保留第一次出现的行,删除之后所有完全相同的行。它不做近似匹配,所以「张三」和「张三 」会被视为不同的两行 —— 这正是建议先执行「去首尾空格」再去重的原因。如果要处理更复杂的重复情况(比如忽略大小写),可以先做大小写统一再去重。

中文排序是按什么顺序?

按拼音顺序,使用的是浏览器内置的 localeCompare 方法并指定 zh-CN 区域。所以「安」会排在「白」前面。要注意它和「按笔画排序」不一样,和按 Unicode 编码排序也不一样 —— 如果直接按字符编码排,中文的顺序会是乱的,这也是很多简易工具排序结果看起来很怪的原因。

全角转半角有什么用?

主要是处理输入法造成的格式不一致。中文输入法在中文状态下打出的数字、字母和标点是全角的,英文状态下是半角的。这两种字符在肉眼看来几乎一样,但对程序来说是不同字符 —— 全角「123」和半角「123」无法互相比较。所以把名单、编号、数据导入系统前,统一转成半角能避免大量莫名其妙的匹配失败。反过来,半角转全角常用于排版的场合,让中英文混排更整齐。

可以同时勾选多个处理项吗?执行顺序是什么?

可以,而且这是这个工具的便利之处。处理会按固定顺序依次执行:先去空格等清理类操作,再做去重,然后是排序、大小写与全半角转换,最后执行正则替换。这个顺序是刻意安排的 —— 先做清理能避免因为多余空格导致去重失败,把正则替换放在最后则让它能作用于已经整理好的文本。