nodejs的readline怎么支持字符串逐行读取

JavaScript07

nodejs的readline怎么支持字符串逐行读取,第1张

您好,我看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分的并且你的悬赏分也会被没收!所以我给你提几条建议:

一,你可以选择在正确的分类下去提问,这样知道你问题答案的人才会多一些,回答的人也会多些。

二,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的。

三,你可以向你的网上好友问友打听,他们会更加真诚热心为你寻找答案的,甚至可以到相关网站直接搜索.

如何使用Readline

创建Readline实例

学习里面的接口方法

学习监听与处理Readline事件

创建Readline实例

readline.createInterface(options)

创建一个readline的接口实例. 接受一个Object类型参数,可传递以下几个值:

input - 要监听的可读流 (必需)

output - 要写入 readline 的可写流 (必须).

completer - 用于 Tab 自动补全的可选函数。(不常用)

terminal - 如果希望 input 和 output 流像 TTY 一样对待,那么传递参数 true ,并且经由 ANSI/VT100 转码。 默认情况下检查 isTTY 是否在 output 流上实例化。(不常用)

var readline = require(‘readline’) 

var rl = readline.createInterface({ 

input: process.stdin, 

output: process.stdout 

})

接口

rl.close()

关闭接口实例 (Interface instance), 放弃控制输入输出流。”close” 事件会被触发

rl.pause()

暂停 readline 的输入流 (input stream), 如果有需要稍后还可以恢复。

rl.prompt([preserveCursor])

为用户输入准备好readline,将现有的setPrompt选项放到新的一行,让用户有一个新的地方开始输入。将preserveCursor设为true来防止光标位置被重新设定成0。

rl.question(query, callback)

预先提示指定的query,然后用户应答后触发指定的callback。 显示指定的query给用户后,当用户的应答被输入后,就触发了指定的callback

rl.resume()

恢复 readline 的输入流 (input stream).

rl.setPrompt(prompt)

设置提示符,例如当你在命令行运行 node 时,你会看到(prompt)

rl.write(data[, key]) 

第一个简单的readline案例

var readline = require('readline')

var rl = readline.createInterface(process.stdin,process.stdout)

// question方法

rl.question('what is you name? ',function(answer){

 console.log('my name is ' + answer)

 //不加close,则不会结束

 rl.close()

})

// close事件监听

rl.on('close',function(){

 console.log('欢迎下次再来')

 process.exit(0)

})123456789101112131415

类似命令行的输入出

var readline = require('readline')

var rl = readline.createInterface(process.stdin,process.stdout)

rl.setPrompt('please>')

rl.prompt()

rl.on('line',(line)=>{

 switch(line.trim()){

   case 'pause':

     rl.pause()

     break

   case 'copy':

     console.log('复制')

     break

   case 'hello':

       rl.write("Write")

       console.log('world!')

       break

   default:

     console.log('没有找到命令')

     break

 }

 rl.prompt()

})

rl.on('close',function(){

 console.log('欢迎下次再来')

 process.exit(0)

})

rl.on('pause', function() {

 console.log('Readline 输入暂停.')

})12345678910111213141516171819202122232425262728293031

事件

事件:’line’

function (line) {}

在 input 流接受了一个 \n 时触发,通常在用户敲击回车或者返回时接收。 这是一个监听用户输入的利器。

example:

rl.on('line', (cmd) =>{

 console.log(`You just typed: ${cmd}`)

})1234

事件:’pause’

function () {}

不论何时,只要输入流被暂停就会触发。 

同样当输入流未被暂停,但收到 SIGCONT 也会触发。 (详见 SIGTSTP 和 SIGCONT 事件)

example:

rl.on('pause', function() {

 console.log('Readline 输入暂停.')

})1234

事件: ‘resume’

function () {}

不论何时,只要输入流重新启用就会触发。 

example:

rl.on('resume', function() {

 console.log('Readline 恢复.')

})1234

事件:’close’

function () {}

当 close() 被调用时触发。 

当 input流接收到”结束”事件时也会被触发. 一旦触发,应当认为Interface实例 “结束” . 例如, 当input流接收到^D时, 分别被认为EOT. 

当 input 流接收到一个 ^C 时,即使没有 SIGINT 监听器,也会触发这个事件,分别被称为 SIGINT 。 

example:

rl.on('close',function(){

 console.log('欢迎下次再来')

 process.exit(0)

})12345

'use strict'

const readline = require("readline-sync")

let money = 1000

let ATM = function () {

console.log("输入账号")

let accout = readline.question("")

console.log("输入密码")

let passwordatm = parseInt(readline.question(""))

if (login(accout, passwordatm) == true) {

console.log("1查看余额2取钱3存钱")

let cho = readline.question("") - 0

switch (cho) {

case 1:

console.log("还有" + money)

break

case 2:

console.log("输入金额")

let getmoney = readline.question("") - 0

getmo(getmoney)

break

case 3:

console.log("输入金额")

let savemoney = readline.question("") - 0

save(savemoney)

break

}

} else {

console.log("输入错误")

}

}

function login(username, pasw) {

if ((username == "zhangsan") &&(pasw == 123)) {

return true

} else {

return false

}

}

let getmo = function (getmoney) {

if (money >= getmoney) {

money -= getmoney

console.log("取款" + getmoney, "还剩" + money)

return true

}

return false

}

let save = function (savemoney) {

money += savemoney

console.log("存款成功,余额:" + money)

}

ATM()