文本工具
统计 / 对比 / 去重 / 大小写 · 共 10 个工具
文本工具存在的理由很朴素:同一个字符串在一种语境里是对的,在另一种里就是坏的——不可见字符、混杂的换行符、重复行,以及"字数"这个词的四种不同定义。这些工具的作用就是把不可见的东西显示出来、把不一致的东西统一起来。
它们大多是按行处理的:按换行切分、逐行变换、再拼回去。这正好适合日志、列表、CSV 列和配置文件,不适合散文。正则测试是例外,它在整段输入上工作,并显示每一处匹配与分组捕获。
我该用哪个?
- 两个工具给的字数不一样:先用字数统计。它分别给出 UTF-16 码元、码点、UTF-8 字节和字素簇四个口径,大部分分歧一眼就能解释。
- Shell 脚本报 bad interpreter:过一遍去空白,重点看回车符。CRLF 文件每行末尾都藏着一个 \r。
- 清理粘贴来的列表:去重与行处理负责重复行、空行、排序、编号,每个开关独立,可以只删空行而不动重复项。
- 批量改文件名或字段名:命名转换在 camelCase、snake_case、kebab-case、PascalCase、CONSTANT_CASE 之间互转,并会提示映射有歧义的输入。
- 按模式批量替换:先用正则测试,再用批量替换——顺序不要反。
本分类的全部工具
字数统计
统计字符、中英文、行段、UTF-8 字节与预估阅读时间
文本逐行对比
并排找出两版文本的新增与删除行
按行去重排序
去除空行、重复行,可选按字母顺序排序
大小写转换
全大写、全小写、首字母、每词首字母、句首大写互转
命名风格互转NEW
camel / Pascal / snake / kebab / CONSTANT 五种风格一键互转
行处理工具
批量加前后缀、行号,删除或保留含关键字的行
批量查找替换
支持普通文本与正则,可选忽略大小写,逐处替换
正则测试HOT
实时高亮匹配、展示捕获组,支持 g/i/m 开关
HTML 实体编解码
特殊字符与 & < 等 HTML 实体互相转换
空白处理
去首尾、合并空格、删全部空白、删 Tab、CRLF 与 LF 互转
本分类的深度指南
- 字数统计为什么各家结果不一样:字符、码点、字节的区别统计字符、中英文、行段、UTF-8 字节与预估阅读时间
- 文本对比的原理:LCS 算法、行级比较与噪声处理并排找出两版文本的新增与删除行
- 按行去重与排序:精确匹配的边界和常见意外去除空行、重复行,可选按字母顺序排序
- 五种大小写转换的区别:句首大写和每词大写不一样全大写、全小写、首字母、每词首字母、句首大写互转
- 命名风格转换:五种写法的区别与转换中的陷阱camel / Pascal / snake / kebab / CONSTANT 五种风格一键互转
- 批量行处理:加前后缀、加行号、按关键字筛选批量加前后缀、行号,删除或保留含关键字的行
- 批量查找替换:普通模式与正则模式的区别支持普通文本与正则,可选忽略大小写,逐处替换
- 正则表达式测试:标志位、贪婪匹配与回溯陷阱实时高亮匹配、展示捕获组,支持 g/i/m 开关
- HTML 实体编解码:什么时候必须转义,什么时候不必特殊字符与 & < 等 HTML 实体互相转换
- 空白处理:六种清理动作的适用场景去首尾、合并空格、删全部空白、删 Tab、CRLF 与 LF 互转
常见问题
为什么字数有四个不同的结果?
因为它们量的不是同一件事。UTF-16 码元就是 JavaScript 的 length,一个基本平面外的 emoji 算 2;码点统计的是 Unicode 标量值;UTF-8 字节关系到存储上限和数据库字段长度;字素簇才是人眼看来"一个字"的数量,包含组合符号与 emoji 序列。
为什么不能用正则解析 HTML?
HTML 不是正则语言。可选闭合标签、同名元素嵌套、属性引号规则,都会让在你测试的那段样本上看起来正确的模式失效。要处理结构就用解析器查询 DOM;正则可以用于压平、提取已知字段或快速筛查,但不能用来保证正确性。
校验邮箱该用正则吗?
严格来说不该。完整文法允许带引号的本地部分和注释,写得出的"全通过"正则既难读也不可靠;而好读的正则一定会拒绝合法地址。用是否存在 @ 和点做交互提示,然后发一封确认邮件——那才是唯一真实的校验。