我们如何才能像JS中的键盘输入一样?

时间:2018-10-09 15:19:37

标签: javascript node.js

在我的项目中,我现在需要从键盘进行输入。 用户必须能够输入多个单词,并且当他按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

能帮我知道吗,如何编码才能使键盘像输入一样?

2 个答案:

答案 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?
然后,您可以遍历数组以找出是狗还是女孩!