Javascript 循环浏览nodejs中的文本文件
我对nodejs还不太熟悉。我能够逐行读取并打印到控制台,但不能像在vbscript或python中那样循环遍历文本文件。这是我想做的 在文件中循环查找一个单词。找到单词后,让程序转到文本文件的下一行,并将其打印到屏幕和下一行,依此类推,直到找到一个空行(这是我停止循环的地方) 现在所发生的一切就是它读到这个词然后停下来。我还没有找到一种在线循环浏览nodejs中文本文件的方法 我不知道如何到达文本文件中的下一行 请详细解释如何解决我目前的问题。还可以添加什么以使lineReader转到下一行。代码如下。它已经打扫干净了。我尝试在if语句中执行另一个for循环,但它不起作用。我尝试了数组,但它也不起作用Javascript 循环浏览nodejs中的文本文件,javascript,node.js,Javascript,Node.js,我对nodejs还不太熟悉。我能够逐行读取并打印到控制台,但不能像在vbscript或python中那样循环遍历文本文件。这是我想做的 在文件中循环查找一个单词。找到单词后,让程序转到文本文件的下一行,并将其打印到屏幕和下一行,依此类推,直到找到一个空行(这是我停止循环的地方) 现在所发生的一切就是它读到这个词然后停下来。我还没有找到一种在线循环浏览nodejs中文本文件的方法 我不知道如何到达文本文件中的下一行 请详细解释如何解决我目前的问题。还可以添加什么以使lineReader转到下一行。
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);
}
}
});
var lineReader=require('readline')。createInterface({
输入:require('fs').createReadStream('text.txt'))
});
lineReader.on('line',函数(line){
对于(变量x=0;x
这是修订版。我修改了spooky的示例
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 );
}
}
});
}
函数find(){
var-Arry=[];
var lineReader=require('readline')。createInterface({
输入:require('fs').createReadStream(text.txt)
});
lineReader.on('line',函数(line){
Arry.推(线);
});
lineReader.on('close',函数(行){
var-Ncount=0;
对于(变量x=0;x }while(Ncount使用此代码,它使用数组在数据中来回移动。请注意,这可能会占用大量内存,但有助于解决以下问题:
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);
}
}
});
如果您看最后一个示例:
对于每一行,函数都将使用line变量调用,日志将被触发,您可以将console.log包装在您的条件中。这里要记住的是,您提供的函数将作为回调调用,其中line作为参数传入,因此不需要外部循环。这就是我所做的想要。我修改了spooky的示例。
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 );
}
}
});
}
函数find(){
var-Arry=[];
var lineReader=require('readline')。createInterface({
输入:require('fs').createReadStream(text.txt)
});
lineReader.on('line',函数(line){
Arry.推(线);
});
lineReader.on('close',函数(行){
var-Ncount=0;
对于(变量x=0;x }当(n不重复的可能重复。另一篇文章没有回答我的问题。你想要一种node.js方式逐行读取文件吗?否?是的…只是为了将文件放入程序中。我想循环浏览文件,然后逐行打印,直到满足一个条件,这就是在与p链接一起提供的答案中所做的可能重复如果我没有错…text.txt每行包含一个单词。如果每行有多个单词,则必须实现标记化器。它执行每行应该读取的操作,但我无法进行操作,例如在找到包含单词的行后转到下一行读取。@Nb\u我现在理解它你想做的是…也许你应该将文件读入数组,然后按照你的意愿进行操作?你试过了吗?@Nb\u me我已经根据你的需要更新了我的答案…祝你好运,我的朋友。谢谢,伙计…我修改了它以适应我的需要。我仍然不清楚使用“开”两次会发生什么,但我是新的,所以我必须继续边走边学。好的……帮助我了解更多。下面是一个我想做的示例。该文件包含一个单词say“cat”。if语句找到了这个词。现在有20行文本,直到有一行没有文本(空。这是我要停止打印的地方)。您说过在我的条件中包装console.log。console.log仅在满足条件的情况下打印变量所在的位置。我如何转到顶部并读取超出其行变量停止位置的内容。可以想象,您可以设置外部(全局)变量变量print=false,在开始条件下为true,只有在为true时才打印,即在结束条件下将其设置为false。这对我来说似乎是一个天真的解决方案,我相信有一种更优雅的方法。但现在我觉得这是最简单的方法。@KARLockhart…谢谢我使用了spooky的示例。代码在我的ori附近基纳尔柱。
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);
});
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 );
}
}
});
}