从节点事件process.stdin.on(“data”)收到的数据中删除新行字符

我一直在寻找这个答案,但无论使用什么方法,似乎都不会在我的string结尾处切断换行符。

这里是我的代码,我试图使用str.replace()来摆脱新的行字符,因为它似乎是这个问题的标准答案:

 process.stdin.on("data", function(data) { var str; str = data.toString(); str.replace(/\r?\n|\r/g, " "); return console.log("user typed: " + str + str + str); }); 

我在控制台输出中重复了三次str对象来testing它。 这是我的结果:

 hi user typed: hi hi hi 

正如你所看到的,在每个str之间还有新的行字符被读取。 我已经尝试了str.replace()的一些其他参数,但似乎没有工作在摆脱新的行字符。

你正在调用string.replace而不分配任何地方的输出。 该函数不会修改原始string – 它会创build一个新的string – 但是您不存储返回的值。

尝试这个:

 ... str = str.replace(/\r?\n|\r/g, " "); ... 

但是,如果您实际上要删除input周围的所有空格(不是最后的换行符),则应该使用trim

 ... str = str.trim(); ... 

它可能会更高效,因为它已经在Node.js二进制文件中实现了。

你正在试图在没有更新的情况下输出str的值。 你应该做到这一点

 str = str.replace(/\r?\n|\r/g, " "); 

在控制台输出前。

您需要将数据转换为JSON格式。 JSON.parse(data)将删除所有新的行字符,并保留JSON格式的数据。