粘贴文本清洗
灵感:能力工具箱 paste-clean(自研清洗,无接口)。
从企微、Word、网页粘贴到 CRM 时,去掉零宽字符/BOM,全角空格与全角字母数字转半角,合并多余空白,保留换行结构。
何时使用
- 粘贴跟进笔记出现「看不见的字符」
- 全角数字导致手机号校验失败
硬约束
- 纯字符串处理,无网络。
- 处理:
\u200B-\u200D、\uFEFF、\u00A0、全角空格\u3000;全角!~~段转半角。 - 行内多空格压成单个;连续空行最多保留 1 个空行;首尾 trim。
- 提供
cleanStats(before, after):前后长度与减少量。 - 不删除用户有意义的标点内容(仅规范空白与全角兼容字符)。
推荐实现要点
export function cleanPasteText(raw: string): string {
let s = String(raw || '')
s = s.replace(/[\u200B-\u200D\uFEFF\u00A0]/g, ' ')
s = s.replace(/\u3000/g, ' ')
s = s.replace(/[\uFF01-\uFF5E]/g, (ch) =>
String.fromCharCode(ch.charCodeAt(0) - 0xfee0),
)
return s
.split('\n')
.map((line) => line.replace(/[ \t]+/g, ' ').trim())
.join('\n')
.replace(/\n{3,}/g, '\n\n')
.trim()
}
export function cleanStats(before: string, after: string) {
return {
beforeLen: before.length,
afterLen: after.length,
removed: Math.max(0, before.length - after.length),
}
}
Agent 步骤
- 实现清洗;粘贴事件
paste后可自动替换。 - 自测:含零宽与全角数字的串,清洗后手机号可匹配
\d{11}。 - UI 可展示「已去除 N 个异常字符」。
附加
- README.md · reference.md · templates/usage.md