gpt4 book ai didi

node.js - 如何将 process.stdin 的输入与字符串进行比较? Node.js

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:07 29 4
gpt4 key购买 nike

我在下面的链接中找到了答案,但是在使用他的代码的固定版本后,它也不起作用。它只返回数据,但不返回 if 语句中写入的日志。如果数据与字符串匹配,那么我想执行某个任务,我也尝试过 toString()。

How to compare input from process.stdin to string in NodeJS?

我的代码

process.stdin.setEncoding('utf8');

process.stdin.on('readable', () => {
const data = process.stdin.read()
if (data == 'expected\n') {
process.stdout.write('worked')
}
})

process.stdin.on('end', () => {
process.stdout.write('end')
})

他的“固定”代码

process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() {
var chunk = process.stdin.read();

if(chunk === null)
return;

//i've tried this as well, to no avail
//chunk = chunk.toString();

if(chunk == "expectedinput\n")
console.log("got it!");

process.stdout.write('data: ' + chunk);

});

最佳答案

如果你console.log block ,你会注意到它添加了一个换行符。所以你需要做的就是用换行符分割字符串并检查第一个元素。

process.stdin.setEncoding('utf8');

var os = require('os');


process.stdin.on('readable', function() {
var chunk = process.stdin.read();

if(chunk === null)
return;

chunk = chunk.split(os.EOL);

if(chunk[0] == "expectedinput")
console.log("got it!");

process.stdout.write('data: ' + chunk);
});

或者您可以使用 npm 模块 linebyline 来简化操作:

var readline = require('linebyline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});

rl.on('line', function(line){
if(line == "expectedinput") console.log("got it!");
console.log(line);
})

关于node.js - 如何将 process.stdin 的输入与字符串进行比较? Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48066896/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com