使用nodejs从控制台读入内容
在写算法题的时候,基本上都需要输入输出语句,在大多数练题网站上当想用js书写算法题时,发现不知道怎么输入,其实Node是提供了一个readline模块来实现此功能的
tip
笔者用过的练题网站只有leetcode在使用js书写时只需要实现功能函数就行,就不需要考虑如何从键盘录入内容
简单使用
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
// 监听键入回车事件
rl.on('line', (str) => {
// str即为输入的内容
if (str === 'close') {
// 关闭逐行读取流 会触发关闭事件
rl.close()
}
console.log(str);
})
// 监听关闭事件
rl.on('close', () => {
console.log('触发了关闭事件');
})
假设上面的文件叫read.js,接下来我们直接输入下面运行
node read.js
上面的逻辑是输入字符串 close时退出程序
感觉并没有其它语言用起来那么安逸,比如:
- C++:
cin>>param - C:
scanf("%s",¶m) - C#:
param = Console.ReadLine() - ...等等
怎样才能变得向上面那样用起来输入一点呢?我们为上面代码包装一下
封装
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
/**
* 读入一行
*/
function readLine() {
return new Promise(resolve => {
rl.on('line', (str) => {
resolve(str)
})
})
}
/**
* 退出逐行读取
*/
function close() {
rl.close()
}
module.exports = {
readLine,
close
}
我们在编写一个新的test.js,上面的叫read.js 放在同一目录下
const { readLine, close } = require('./read')
/**
* 运行的main函数
**/
async function main() {
let i = await readLine();
while (+i !== 0) {
console.log(`你输入的是${i}`);
i = await readLine();
}
close();
}
// 调用执行
main();
现在用起来就方便多了,只需要在函数结束时加上close不然不会退出
使用nodejs从控制台读入内容的更多相关文章
- nodejs抓取页面内容,并分析有无某些内容的js文件
nodejs获取网页内容绑定data事件,获取到的数据会分几次相应,如果想全局内容匹配,需要等待请求结束,在end结束事件里把累积起来的全局数据进行操作! 举个例子,比如要在页面中找有没有www.ba ...
- idea 未实现接口红线提示,重复代码波浪线提示,自动换行,控制台输出内容自动换行
01,Could not autowire. No beans of 'UserMapper' type found 01.1,问题描述,通过反射动态实现的接口在调用时会出现以上提示,常见的如 ORM ...
- 在浏览器控制台输出内容 console.log(string);
在浏览器控制台中写如数据 1添加 <script type="text/javascript">djConfig = { isDebug: true };< ...
- java--从控制台读入一些数据
学一些东西应该,学以致用: 现在我开始使用流的办法从控制台读取数据 import java.io.*; public class Demo2{ public static void main(Stri ...
- nodejs往文件写入内容代码
const fs = require("fs"); // fs.wirteFile有三个参数 // 1,第一个参数是要写入的文件路径 // 2,第二个参数是要写入得内容 // 3, ...
- CLion 控制台输出内容乱码问题的解决方法
问题再现 #include "stdio.h" #include "stdlib.h" int main() { printf("嘤嘤嘤") ...
- nodejs 在headers添加内容发送到后端
app.all('*', function(req, res, next){ req.headers['COOKIE'] = 'Your Cookie' next() })
- NodeJs 遍历文件夹内容 上传到服务器.并输出上传记录文件
var path = require('path'); var glob = require('glob') var fs = require('fs'); var Promise = require ...
- 06--Java--Scanner类读入控制台
Scanner类读入控制台 1.什么是Scanner类 Scanner类是java中从控制台读入用户输入的类 import java.util.Scanner; public class a_Lear ...
- console.read()读入的内容
今天写的特别简单的代码,大体是一个模式选择,从控制台读入一个数,然后做出相应的选择. 代码如下: using System; using System.Collections.Generic; usi ...
随机推荐
- 基本数据类型(primitive type)
数据类型 数据类型分为基本数据类型(primitive type)和引用数据类型(reference type) 基本数据类型(primitive type) 数值类型 整数类型 浮点类型 字符类型 ...
- 如何更改 C# Record 构造函数的行为
如何更改 C# Record 构造函数的行为 Record 是 C# 9 中的一个新功能.Record是从Structs借用的特殊类, 因为它们具有 基于值的相等性,您可以将它们视为两类类型之间的混合 ...
- 从零开始的react入门教程(八),redux起源与基础用法
壹 ❀ 引 我们在从零开始的react入门教程(七),react中的状态提升,我们为什么需要使用redux一文中介绍了react的状态提升,对于不同组件之间状态需要通信时,将状态提升至两个组件共有的最 ...
- NC23803 DongDong认亲戚
题目链接 题目 题目描述 DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程 ...
- Python 中Time 模块
python的time内置模块是一个与时间相关的内置模块,很多人喜欢用time.time()获取当前时间的时间戳,利用程序前后两个时间戳的差值计算程序的运行时间,如下: 1.使用time.time() ...
- 多模式匹配的Trie实现
业务场景 这种需求一般用于敏感词过滤等场景, 输入是大文本, 需要快速判断是否存在匹配的模式串(敏感词), 或者在其中找出所有匹配的模式串. 对于模式串数量不超过5000的场景, 直接用暴力查找速度也 ...
- Js中的逻辑运算符
Js中的逻辑运算符 JavaScript中有三个逻辑运算符,&&与.||或.!非,虽然他们被称为逻辑运算符,但这些运算符却可以被应用于任意类型的值而不仅仅是布尔值,他们的结果也同样可以 ...
- 关于php redis的geocoding函数
在php的redis扩展官方github上,文档的最下面的确存在geocoding的函数说明.但是笔者尝试调用geoAdd函数时,返回值一直为false.就纳闷了,是使用的姿势不对,还是存在其它问题? ...
- maven打包时打包指定的lib文件夹
今天在打包自己的spring boot项目时遇到了问题, 报找不到类和符号. 因为我有些依赖是放在项目lib文件夹中,那么打包的时候要连把它一起打包. 修改pom.xml, 添加一下内容: <b ...
- OkHttp 拦截器的一些操作
OkHttp 拦截器的一些操作 转自: https://blog.csdn.net/songzi1228/article/details/116782794