正则与文本处理指南
文本对比:不可见换行与 Unicode 差异
识别 CRLF、LF 和 Unicode 归一化差异,再决定是否清理空白或改写内容。
检查不可见字符
两份肉眼相同的文件可能在 CRLF、LF 或末尾换行上不同,文本对比会显示大量改行。
先在字节或转义视图检查一小段,找到表示差异后再决定是否改整份文件。
LF: 0a
CRLF: 0d 0a归一化改变底层表示
带重音字符可用预组合码点或基本字母加组合标记表示,JavaScript 相等比较底层序列。
NFC 可用于约定后的规范等价比较,但这属于明确转换,不应因此自动覆盖原始来源。
"\u00e9" === "e\u0301" → false
"\u00e9".normalize("NFC") === "e\u0301".normalize("NFC") → true空白可能有意义
普通文本可清理行尾空格,但样例、Markdown 换行或签名消息字节可能因此改变。
先确定需要精确比较还是归一化审阅,依赖摘要、签名和原文编辑时保留原始数据。
核对真正的修改
明确归一化后再次对比,并检查一处真实内容变更,确认表示清理没有掩盖数据修改。
JSON 可进一步做结构对比,文本相等和结构相等回答不同问题,应按任务选择。