Remove new line characters from data recieved from node event process.stdin.on(“data”)

天涯浪子 提交于 2021-02-07 05:10:39

问题


I've been looking for an answer to this, but whatever method I use it just doesn't seem to cut off the new line character at the end of my string.

Here is my code, I've attempted to use str.replace() to get rid of the new line characters as it seems to be the standard answer for this problem:

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);
});

I've repeated the str object three times in console output to test it. Here is my result:

hi
user typed: hi
hi
hi

As you can see, there are still new line characters being read between each str. I've tried a few other parameters in str.replace() but nothing seems to work in getting rid of the new line characters.


回答1:


You are calling string.replace without assigning the output anywhere. The function does not modify the original string - it creates a new one - but you are not storing the returned value.

Try this:

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

However, if you actually want to remove all whitespace from around the input (not just newline characters at the end), you should use trim:

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

It will likely be more efficient since it is already implemented in the Node.js binary.




回答2:


You were trying to console output the value of str without updating it. You should have done this

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

before console output.




回答3:


you need to convert the data into JSON format. JSON.parse(data) you will remove all new line character and leave the data in JSON format.



来源:https://stackoverflow.com/questions/20794241/remove-new-line-characters-from-data-recieved-from-node-event-process-stdin-on

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!