在我的项目中,我现在需要从键盘进行输入。 用户必须能够输入多个单词,并且当他按CTRL + D时,您退出程序并显示结果。 例如,我们可以在终端上输入:
bob
alicia
cookie
shirley
david
我们有以下代码:
#!/usr/bin/env node
let chunk = "";
process.stdin.on("data", data => {
chunk += data.toString();
});
process.stdin.on("end", () => {
chunk.replace(/^\s*[\r\n]/gm,"").split(/\s+/).forEach(function (s) {
process.stdout.write(
s === 'bob'
? 'boy \n'
: s === 'alicia'
? 'girl\n'
: s === 'cookie'
? 'dog \n'
: 'unknown \n');
});
});
当我们按CTRL + D时,我们需要获得以下结果:
boy
girl
dog
unknown
unknown
能帮我知道吗,如何编码才能使键盘像输入一样?
答案 0 :(得分:0)
Here是介绍基本知识的文章。我在下面为您提供了一个示例,您可能可以自己找出其余的内容。
const readline = require('readline');
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
let input = [];
let chunk = '';
process.stdin.on('keypress', (str, key) => {
if (key.ctrl && key.name === 'd') {
//Handle exit code here
process.exit();
}
if (key.name === 'return') {
input.push(chunk.replace('\r', ''));
chunk = '';
process.stdout.write('\n');
}
chunk+=str;
process.stdout.write(str);
});
答案 1 :(得分:-1)
一种执行此操作的方法是循环输入,直到采用某个输入为止。伪代码示例:
While (x≠q){
Take input
}
编辑:另一种方式是,不使用回车键来分隔空格,而是在一个输入行中使用逗号或空格分隔所有内容。
var str = "123, 124, 234,252";
var arr = str.split(",").map(val => Number(val) + 1);
console.log(arr);
我从以下问题中发现了上述问题:How to split and modify a string in NodeJS?。
然后,您可以遍历数组以找出是狗还是女孩!