每当有效负载长度超过一定数量的字符时,并且在一定数量的小数之后,我需要在 Node-RED 中拆分有效负载。
我正在从事一个项目,其中传感器向 Node-RED 提供反馈,但它有时会将两个输出放在一起,我似乎找不到一种方法将结果数据分成两部分,位置不是在小数点,而是小数点后的数字。
目前,我正在使用废弃错误的输出if (msg.payload.length < 11){return msg;}
这样,仅进一步处理单个输出结果,而丢弃其他任何结果。
输出可以像123.4567123.4687
而不是123.4567
和123.4687
。 请注意,问题仅在偶尔发生(大约每 100 次测量一次)。 请注意,小数点前的位数不一定每次都相同,因此这不仅仅是在一定数量的数字之后从第一个数字中拆分的问题。
如果小数点后的位数是常数,则可以使用正则表达式提取所需的值,例如:
var input = "123.4567123.4678";
var results = input.match(/d+.d{4}/g);
结果是一个数组,其中包含两个字符串值:[ '123.4567', '123.4678' ]
正则表达式全局匹配一个或多个数字(d+
),后跟一个点(.
),后跟四位数字(d{4}
)