node-red 拆分、重新排序和连接输出字符串

node-red split, reorder and join an output string

我正在尝试重新排序节点红色的输出字符串,如下例所示:

输出:

msg.payload: rgb(152,11,100)

我想要这样:

mg.payload: rgb(11,100,152)

我尝试使用 split 节点使用 , 字符串,然后我得到了三个输出,但我无法按照我想要的顺序再次加入它们

最简单的方法可能就是在函数节点中使用正则表达式。

var re = /rgb\((\d+),(\d+),(\d+)\)/;
var match = re.exec(msg.payload);
msg.payload= "rbg(" + match[2] + "," + match[3] + "," + match[1] + ")";
return msg

我得到了另一个同样有效的答案(感谢 z1rconium

使用函数节点:

input = msg.payload
str = input.substr(4,input.indexOf(")")-4)
out = str.split(",");
// creates an array you can use;
// out[0] = 152
// out[1] = 11
// out[2] = 100
return {payload:"rgb("+out[1]+","+out[2]+","+out[0]+")"}
//msg.payload : string[14]
//"rgb(11,100,152)"

在函数节点内使用的替代代码。它使用 ES6 功能:

let pay = msg.payload.slice(4, -1).split(",");
let [r,g,b] = [...pay];
msg.payload = `rgb(${g},${b},${r})`;
return msg;