文本处理微操:在节点中使用 .split(), .replace() 和 .trim() 清洗数据

2026-01-25 33 0

场景导入:别让“脏数据”拖垮你的自动化流程

兄弟们,大家好,我是 N8N大学 的主编。今天咱们聊点实在的。

文本处理微操:在节点中使用 .split(), .replace() 和 .trim() 清洗数据

做自动化的兄弟一定深有体会:数据从第三方 API、Webhook 或者爬虫过来的时候,往往是一身“脏衣服”。要么前后带着多余的空格,要么混杂着看不懂的换行符,要么名字和邮箱挤在一起。直接用?轻则字段解析失败,重则整个流程卡死。

手动去改?那还叫自动化吗?那是给自己找罪受。今天,笔者就带大家深入 N8N 的 Code 节点,用最简单的 JavaScript 原生方法——.split().replace().trim(),把数据洗得干干净净。

核心武器:Code 节点里的三板斧

在 N8N 里,Code 节点**(或者 Function 节点)是数据处理的最后一道防线,也是最强的微操工具。别怕写代码,我们只用三个最简单的字符串方法。

1. .trim():强迫症的福音

这是最基础的清洗动作。用户手滑多敲的空格、系统生成的换行,统统干掉。

场景: 用户提交的表单里,邮箱 " user@example.com " 根本无法校验。

写法:

const dirtyInput = "  user@example.com  ";
const cleanInput = dirtyInput.trim();
// 结果:"user@example.com"

在 N8N 的 Code 节点里,你可以直接针对输入的 JSON 字段操作:
item.json.email = item.json.email.trim();

2. .split() 与 .join():拆解与重组大师

当你遇到“张三,李四,王五”这种数据时,.split() 就是你的一把手术刀。它能按指定字符把字符串切开,变成一个数组。

场景: 清洗掉字符串里的所有空格。

写法:

const str = "Hello   World";
const cleaned = str.split(' ').join(' ');
// 结果:"Hello World" (中间只剩一个空格)

或者处理复杂的全角/半角符号混合问题:

const rawName = "张三,李四";
const nameArray = rawName.split(','); // 按中文逗号切分

3. .replace():乾坤大挪移

这是最强大的方法,用于替换。它支持普通字符串,也支持正则表达式(Regex)。

场景: 去掉字符串里所有的非数字字符,只留电话号码。

写法:

const phone = "Tel: 138-0000-0000";
const cleanPhone = phone.replace(/D/g, '');
// 结果:"13800000000"

这里的 /D/g 就是正则的威力,D 代表非数字,g 代表全局匹配。在 N8N 里,处理这种脏数据,这一行代码顶得上手动删半小时。

实战演练:在 N8N 中清洗“姓名+邮箱”的混合字段

假设我们收到一个 CSV 导入的数据,字段 raw_info 长这样:
" User Name "

我们的目标是提取出纯净的 nameemail

步骤一:安装与拖拽

拖入一个 Code 节点**。确保你的上游节点(比如 Spreadsheet File 或 Webhook)已经把数据传过来了。

步骤二:编写清洗逻辑

在 Code 节点的 JavaScript 编辑器里,我们写入如下逻辑。这是 N8N 大学总结的实战模板:

for (const item of $input.all()) {
  // 1. 先去除首尾空格
  let raw = item.json.raw_info.trim();
  
  // 2. 提取名字 (假设名字在 < 之前)
  // 使用 .split('<') 将字符串切成两段
  let namePart = raw.split('<')[0].trim();
  
  // 3. 提取邮箱 (利用 .replace 去掉尖括号)
  let emailPart = raw.split('', '').trim();
  
  // 4. 赋值给新字段
  item.json.clean_name = namePart;
  item.json.clean_email = emailPart;
  
  return item;
}

解析: 我们先用 .trim() 扫除外围垃圾,再用 .split() 按照 "<" 把字符串切开,最后用 .replace() 去掉收尾的 ">"。一套连招,数据瞬间规范。

步骤三:调试与验证

点击 Code 节点,查看右侧的 JSON/Preview 面板。你会发现多出了 clean_nameclean_email 字段。如果这里报错了,通常是你上游数据里没有 raw_info 字段,或者字段类型不对(比如是 null)。

避坑指南:实战中的 3 个致命细节

笔者在做项目时,因为数据清洗没做好,也踩过不少坑。这里分享两个最常见的:

1. null 值导致的“红屏”

如果你的字段可能是空的(null),直接调用 item.json.field.trim() 会报错:
Cannot read property 'trim' of null

解决方案: 加上防御性编程。
item.json.field = (item.json.field || "").trim();
这样即使数据为空,也会转成空字符串处理,不会阻断流程。

2. 正则表达式里的“转义”地狱

如果你要用 .replace() 去处理特殊字符,比如点号 . 或者加号 +,一定要记得加反斜杠转义。

错误写法: str.replace('.txt', '') (如果字符串里有两个 .txt,可能只替换第一个,取决于浏览器实现)
正确写法: str.replace(/./g, '') (把所有点都换掉)

3. 忽略大小写

有时候数据里 Email 是大写的,或者首字母大写的。用 .replace() 时加上 ignore case 标志。

写法: str.replace(/hello/gi, 'hi') (g: 全局, i: 忽略大小写)

FAQ 问答

Q: 除了 Code 节点,N8N 有没有不用写代码的清洗方法?

A: 有的。N8N 新版的 Set 节点**(或者 Transform 节点)提供了一些基础的字符串操作,但功能有限。对于复杂的正则提取、拆分,Code 节点依然是最高效的选择。笔者建议,想进阶一定要掌握基础 JS。

Q: .split() 和 .match() 哪个更适合提取数据?

A: 如果是固定分隔符(如逗号、空格),用 .split() 更快更直观;如果是提取特定模式的文本(如提取所有网址),配合正则的 .match() 更强大。N8N大学 建议先学会 split,再进阶 match。

Q: 清洗后的数据怎么导出给 Excel?

A: 在 Code 节点处理完数据后,接一个 Spreadsheet File 节点**,选择“写入”模式,映射好你清洗后的字段(如 clean_name, clean_email),就能导出完美的 Excel 表格了。

总结与资源

数据清洗是自动化的基石。.trim() 处理空格,.split() 拆解结构,.replace() 替换垃圾。这三板斧在 N8N 的 Code 节点里配合使用,能解决 90% 的文本清洗需求。

不要害怕代码,它们只是你驯服数据的工具。我是 N8N大学 的主编,希望这篇干货能帮你解决实际问题。去试试吧,把那些脏数据洗得像刚出厂一样!

相关文章

n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决
当n8n流程意外中断,Error Handling节点如何配置才能优雅降级?
n8n Error Handling节点和Try/Catch节点,到底该怎么选?

发布评论