web-dev-qa-db-ja.com

ノードイベントprocess.stdin.on( "data")から受け取ったデータから改行文字を削除します

これに対する答えを探していましたが、どの方法を使用しても、文字列の最後の改行文字が途切れないようです。

これが私のコードです。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オブジェクトを3回繰り返しました。これが私の結果です:

_hi
user typed: hi
hi
hi
_

ご覧のとおり、各strの間にはまだ改行文字が読み取られています。私はstr.replace()で他のいくつかのパラメーターを試しましたが、改行文字を取り除くのに何も機能しないようです。

12
lostpebble

出力をどこにも割り当てずにstring.replaceを呼び出しています。関数は元の文字列を変更しません-新しい文字列を作成します-戻り値を保存していません。

これを試して:

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

ただし、入力の周りからallの空白を(最後の改行文字だけでなく)実際に削除する場合は、 trim

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

Node.jsバイナリにすでに実装されているため、より効率的です。

35
Moshe Katz

更新せずにstrの値をコンソール出力しようとしました。あなたはこれをしたはずです

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

コンソール出力の前。

0
MilanYadav