我对nodejs比较陌生。我能够逐行读取并打印到控制台,但不能像在vbscript或python中那样遍历文本文件。这就是我想要做的。
循环浏览一个单词的文件。一旦我找到了这个单词,程序就会转到文本文件的下一行并将其打印到屏幕和下一行,依此类推,直到我到达一个空行(这就是我将停止循环的地方)。
现在发生的一切都是它读取并停止。我没有找到一种在线循环通过nodejs中的文本文件的方法。
我对如何到达文本文件中的下一行感到很遗憾。
请详细解释如何解决我目前遇到的这个问题。还可以添加什么来让lineReader转到下一行。代码如下。它已被清理干净。我试图在if语句中做另一个for循环,但它不起作用。我试过Array,但它也不会工作。
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('text.txt')
});
lineReader.on('line', function (line) {
for (var x= 0; x < line.length; x++)
if(line === "word"){
console.log(line);
}
}
});
以下是修订版。我修改了幽灵般的例子。
function find(){
var Arry = [];
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(text.txt)
});
lineReader.on('line', function (line) {
Arry.push(line);
});
lineReader.on('close', function (line) {
var Ncount = 0;
for(var x =0; x < Arry.length; x++){
if (Arry[x] == 'cat'){
do {
Ncount +=1;
x +=1;
if (Arry[x] == "") {
Ncount = 700;
}
console.log(Arry[x]);
} while (Ncount<700 );
}
}
});
}
答案 0 :(得分:1)
使用此代码,使用Array可以在数据中来回传递。请注意这可能是内存密集型,但有助于您:
var fileLineArray = [];
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('text.txt')
});
lineReader.on('line', function (line) {
// console.log(line);
fileLineArray.push(line);
});
lineReader.on('close', function(){
for(var i=0; i<fileLineArray.length;i++){
var wordIs = fileLineArray[i];
if(wordIs === "word"){
console.log(wordIs);
}
}
});
旧答案是: 使用此代码:
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('text.txt')
});
lineReader.on('line', function (line) {
// console.log(line);
if(line === "word"){ //I am checking for word "word"
console.log(line);
}
});
答案 1 :(得分:1)
这就是我想要的。我修改了幽灵般的例子。
function find(){
var Arry = [];
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(text.txt)
});
lineReader.on('line', function (line) {
Arry.push(line);
});
lineReader.on('close', function (line) {
var Ncount = 0;
for(var x =0; x < Arry.length; x++){
if (Arry[x] == 'cat'){
do {
Ncount +=1;
x +=1;
if (Arry[x] == "") {
Ncount = 700;
}
console.log(Arry[x]);
} while (Ncount<700 );
}
}
});
}
答案 2 :(得分:0)
如果你看一下这里的最后一个例子:https://nodejs.org/api/readline.html
const readline = require('readline');
const fs = require('fs');
const rl = readline.createInterface({
input: fs.createReadStream('sample.txt')
});
rl.on('line', (line) => {
console.log('Line from file:', line);
});
对于每一行,将使用行变量调用该函数并触发日志,您可以在条件中包装console.log。这里需要记住的是,你提供的函数将被调用为一个回调,其中传入的行作为参数,因此不需要外部循环。