从节点事件process.stdin.on("data")中收到的数据中删除换行符

los*_*ble 11 javascript regex node.js

我一直在寻找答案,但无论我使用什么方法,它似乎都没有切断我的字符串末尾的新行字符.

这是我的代码,我试图用来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);
});
Run Code Online (Sandbox Code Playgroud)

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

hi
user typed: hi
hi
hi
Run Code Online (Sandbox Code Playgroud)

如您所见,每个字符之间仍然有新的行字符str.我已经尝试了一些其他参数,str.replace()但似乎没有什么工作可以摆脱新行字符.

Mos*_*atz 36

您正在呼叫string.replace而不在任何地方分配输出.该函数不会修改原始字符串 - 它会创建一个新字符串 - 但您不会存储返回的值.

试试这个:

...
str = str.replace(/\r?\n|\r/g, " ");
...
Run Code Online (Sandbox Code Playgroud)

但是,如果您确实要从输入周围删除所有空格(不仅仅是末尾的换行符),则应使用trim:

...
str = str.trim();
...
Run Code Online (Sandbox Code Playgroud)

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

  • 哇...这么简单的事情要忽视,但却给我带来了太多麻烦.谢谢!我会尽可能地标记这个. (3认同)