使用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不然不会退出
"你的指尖,拥有改变世界的力量! "
欢迎关注我的个人博客:https://sugarat.top