web-dev-qa-db-fra.com

Supprimer les caractères de nouvelle ligne des données reçues de l'événement de noeud process.stdin.on ("data")

Je cherchais une réponse à cette question, mais quelle que soit la méthode que j'utilise, elle ne semble tout simplement pas couper le caractère de nouvelle ligne à la fin de ma chaîne.

Voici mon code, j'ai essayé d'utiliser str.replace() pour supprimer les caractères de la nouvelle ligne, car cela semble être la réponse standard à ce problème:

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

J'ai répété trois fois l'objet str dans la sortie de la console pour le tester. Voici mon résultat:

hi
user typed: hi
hi
hi

Comme vous pouvez le constater, il y a encore des caractères de nouvelle ligne en cours de lecture entre chaque str. J'ai essayé quelques autres paramètres dans str.replace() mais rien ne semble fonctionner pour se débarrasser des caractères de la nouvelle ligne.

7
lostpebble

Vous appelez string.replace sans affecter la sortie où que ce soit. La fonction ne modifie pas la chaîne d'origine - elle en crée une nouvelle - mais vous ne stockez pas la valeur renvoyée.

Essaye ça:

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

Toutefois, si vous souhaitez réellement supprimer all espaces autour de l’entrée (pas uniquement les caractères de nouvelle ligne à la fin), vous devez utiliser trim :

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

Il sera probablement plus efficace puisqu'il est déjà implémenté dans le binaire Node.js.

31
Moshe Katz

Vous tentiez de console en affichant la valeur str sans la mettre à jour. Tu aurais du faire ça

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

avant la sortie de la console.

0
MilanYadav