繁体   English   中英

如何在控制台中接受用户(JS)的输入?

[英]How to accept an input in the console from the user (JS)?

我试图创建一个 JavaScript 程序,它在输入时输出英文字母的二进制格式。 我必须将值放入代码中。 程序运行时如何在控制台输入值?

function returnBinaryLetter(char) {
  return ((/^[a-z]$/).test(char)) ? char.charCodeAt(0).toString(2).padStart(8, '0') : 'Sorry, that is not a letter.'
}

// Something like:
// const input = consoleInputFunction('Enter a number.');
// console.log(returnBinaryLetter(input.toLowerCase()));

编辑 1:这不适用于网页。 这是一个 JS 程序,我将使用 Node.js 运行它。我需要一个只有 JS 的解决方案,而不是一些框架(如果可能的话,只是为了具体提及)。

编辑 2:在 Endothermic Dragon 的回答中提出建议后,我改进了代码。

要直接回答您的问题,在这种情况下,您将使用prompt获取用户输入。

但是,您不需要所有这些代码。 尝试这个:

 function returnBinaryLetter(char) { if ((/^[az]$/).test(char)) { return char.charCodeAt(0).toString(2).padStart(8, '0') } else { return 'Sorry, that is not a letter.' } } var input = prompt('Enter letter to be converted to binary:').toLowerCase(); console.log(returnBinaryLetter(input))

虽然它可能看起来有点吓人,但这是整个事情的分解:

  1. 使用prompt请求输入,并将其转换为小写。
  2. 将字符传递给 function returnBinaryLetter ,并记录 output。

现在对于 function returnBinaryLetter

  1. 使用一些正则表达式检查它是否是单个小写字母。
  2. 如果是,则返回二进制。 否则,返回带有描述的错误。

嗯,但是二进制转换是如何工作的呢?

  1. 首先,获取字符并获取其字符代码。
  2. 接下来,将该代码转换为二进制。
  3. 最后,填充开头,使其成为一个 8 位数字。 如果不是 8 位,则在开头加0直到是。

在这里,您可以看到与手动输入大约 28 行代码相比,更动态的转换看起来更短、更简洁。

奖金:

惊喜,惊喜。 您可以进一步缩短它,使用三元运算符,您可以跳过if-else语句。

 function returnBinaryLetter(char) { return ((/^[az]$/).test(char))? char.charCodeAt(0).toString(2).padStart(8, '0'): 'Sorry, that is not a letter.' } var input = prompt('Enter letter to be converted to binary:').toLowerCase(); console.log(returnBinaryLetter(input))

现在,它是一条线!

当您要根据条件为其赋值时,通常在变量中使用三元运算符。 三元运算符首先检查括号内的条件是否为真,如果是,则返回第一个语句(在?:之间),如果不是,则返回第二个语句(在:之后)。 将此与 function 的return语句配对,您将获得一个单行函数!

反馈:

由于您似乎在关注CamelCase ,我想我会提到 function 名称应始终以大写字母开头,之后的每个单词也应以大写字母开头。 然而,变量是不同的——对于变量,您确实将第一个字母设为小写,但将所有其他单词设为大写。 此外,function 名称returnBinaryLetter对您来说可能看起来很直观,但对于查看代码的任何人来说都不是。 准确描述其 function 的更直观的名称是LowercaseLetterToBinary

对于NodeJS ,您可以使用inquirer ,它为命令行提供不同类型的提示(例如文本、列表、复选框等)。

先决条件:

  • 使用npm install inquirer

例子

const { prompt } = require("inquirer");

async main() {
    const binaryLetter = await prompt({
        type: 'input',
        name: 'letter',
        message: `What's your name >>`
    })
    .then(answer => returnBinaryLetter(answer['letter']));
}

main();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM