【问题标题】:Is there a way to read standard input with JavaScript?有没有办法用 JavaScript 读取标准输入?
【发布时间】:2020-03-07 03:00:24
【问题描述】:

我在许多其他语言中都看到了这一点,但不是 JavaScript。

我正在尝试解决以下问题:this (codechef.com),当然程序需要能够像 C++ 和其他语言一样阅读标准。

编辑:感谢您的回答。我想要这个功能的主要原因是我可以回答 CodeChef 上的问题; Codechef 将多个输入发送到作为答案的文件/程序(当然,程序必须以所需的方式做出响应才能使答案正确)。

【问题讨论】:

    标签: javascript stdin


    【解决方案1】:

    如果你在终端中使用 node 作为解释器,你可以这样使用:

    ---- name.js ----
    var readline = require('readline');
    
    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    
    });
    
    rl.question(">>What's your name?  ", function(answer) {
       console.log("Hello " + answer);
       rl.close();
    });
    
    ----- terminal ----
    node name.js
    

    【讨论】:

      【解决方案2】:

      这取决于执行 JavaScript 的环境。

      在浏览器中,没有标准输入(浏览器不是控制台)。输入通常来自页面上表单中的某个文本框元素。

      如果您使用Rhino 之类的东西,那么您可以导入标准 Java I/O 类并以这种方式从标准输入读取(参见第二个 example 不再在 wiki 上)。

      【讨论】:

      • 如果环境是浏览器,输入可以来自 DOM 中的任何位置。他可能是指 NodeJS 环境。
      【解决方案3】:

      只使用 readline()

      var a = readline();
      

      您输入的值将存储在变量 a 中。

      readline() :从标准输入读取单行输入,将其返回给调用者。您可以使用它在 JavaScript 中创建交互式 shell 程序。

      【讨论】:

      • 如果要在Nodejs中使用,首先需要它;否则它会引发异常并告诉“readline 未定义”。但是这种模式可以在D8 中运行。
      【解决方案4】:

      它不在 ECMAScript(JavaScript 的标准化版本)标准库中。但是,JavaScript 的某些实现确实包含它。例如,由多个浏览器外 JavaScript 环境使用的 CommonJS 具有 system.stdin 属性。 Rhino可以使用Java的标准输入类。

      如果您只是想练习编程,可以使用textarea 来代替标准输入。

      【讨论】:

        【解决方案5】:

        在某些环境中,例如 interviewstreet,它们为您提供了一个函数,其中所有输入都以字符串形式作为参数。

        一次性输入所有内容。

        然后您必须解析该输入以从该字符串中获取各种标记。

        在此之后,您应该可以继续编写代码了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-20
          • 1970-01-01
          • 2020-05-29
          • 2017-12-10
          相关资源
          最近更新 更多