正则与文本处理指南

文本对比:不可见换行与 Unicode 差异

识别 CRLF、LF 和 Unicode 归一化差异,再决定是否清理空白或改写内容。

Nav Tools ·

检查不可见字符

两份肉眼相同的文件可能在 CRLF、LF 或末尾换行上不同,文本对比会显示大量改行。

先在字节或转义视图检查一小段,找到表示差异后再决定是否改整份文件。

LF:   0a
CRLF: 0d 0a

归一化改变底层表示

带重音字符可用预组合码点或基本字母加组合标记表示,JavaScript 相等比较底层序列。

NFC 可用于约定后的规范等价比较,但这属于明确转换,不应因此自动覆盖原始来源。

"\u00e9" === "e\u0301" → false
"\u00e9".normalize("NFC") === "e\u0301".normalize("NFC") → true

空白可能有意义

普通文本可清理行尾空格,但样例、Markdown 换行或签名消息字节可能因此改变。

先确定需要精确比较还是归一化审阅,依赖摘要、签名和原文编辑时保留原始数据。

核对真正的修改

明确归一化后再次对比,并检查一处真实内容变更,确认表示清理没有掩盖数据修改。

JSON 可进一步做结构对比,文本相等和结构相等回答不同问题,应按任务选择。

参考资料

← 正则与文本处理指南