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.
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.
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.