You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node-RED中为航班呼号字符串添加字符间句号适配Google TTS

优化航班呼号TTS发音的Node-RED实现方案

方案1:Function节点一行代码搞定(推荐)

替换你现有流中的3个节点(Function+两个Change)为单个Function节点,代码如下:

// 将任意长度的呼号字符串转为字符间加句号的格式
msg.payload = msg.payload.split('').join('.') + '.';
return msg;
  • 原理:split('')把字符串拆成单个字符的数组,join('.')用句号连接所有字符,末尾加句号保持和你原有输出格式一致(不需要末尾句号可去掉 + '.')
  • 优势:适配任意长度的呼号,代码极简,易维护

方案2:Change节点的JSONata表达式(无代码实现)

如果不想写JS,直接用单个Change节点完成转换:

  1. 新增Change节点,添加规则:Set msg.payload
  2. 规则类型选择jsonata,输入表达式:
$join($split(payload, ""), ".") & "."
  • 原理:JSONata的$split拆分字符,$join用句号拼接,末尾追加句号
  • 优势:纯配置实现,无需编写JavaScript

方案3:正则表达式替换

另一种Function节点的实现方式,用正则匹配每个字符并替换:

msg.payload = msg.payload.replace(/(.)/g, "$1.");
return msg;
  • 原理:正则/(.)/g匹配每一个字符,$1指代匹配到的字符,替换为「字符+句号」

替换后的完整流示例(方案1)

[{"id":"da8a6ef0b3c9a5c8","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"ef9f06be11be1595","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"BA2156R","payloadType":"str","x":340,"y":140,"wires":[["a1b2c3d4e5f6"]]},{"id":"777ae9cd4da78bd3","type":"debug","z":"da8a6ef0b3c9a5c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":false,"statusVal":"","statusType":"auto","x":1150,"y":140,"wires":[]},{"id":"a1b2c3d4e5f6","type":"function","z":"da8a6ef0b3c9a5c8","name":"格式化为字符间加句号","func":"msg.payload = msg.payload.split('').join('.') + '.';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":650,"y":140,"wires":[["777ae9cd4da78bd3"]]},{"id":"3da6785dbcb2f779","type":"comment","z":"da8a6ef0b3c9a5c8","name":"Splitup a code with .'s","info":"Splitup a code with .'s","x":360,"y":80,"wires":[]}]

内容的提问来源于stack exchange,提问作者LordLinhey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:35:15