Javascript 如何从节点js上上传的txt文件中读取特定数据
我需要一个客户端来上传一个文本文件。然后我想解析文本文件,这样文本文件中只剩下带有单词“object”的行。我已经成功地编码了上传部分。但是需要帮助编码如何解析不包含“object”的行。下面是我的节点js代码 步骤:1 使用-- 步骤:2 对于每一行,使用对象regexp进行测试Javascript 如何从节点js上上传的txt文件中读取特定数据,javascript,node.js,Javascript,Node.js,我需要一个客户端来上传一个文本文件。然后我想解析文本文件,这样文本文件中只剩下带有单词“object”的行。我已经成功地编码了上传部分。但是需要帮助编码如何解析不包含“object”的行。下面是我的节点js代码 步骤:1 使用-- 步骤:2 对于每一行,使用对象regexp进行测试 var reg = /object/g if(reg.test(<eachline>)){ // write new line }else{ // do nothing } var reg=/
var reg = /object/g
if(reg.test(<eachline>)){
// write new line
}else{
// do nothing
}
var reg=/object/g
if(reg.test()){
//写新行
}否则{
//无所事事
}
您可以使用节点核心的一部分来逐行迭代文件。您可以使用来确定行中是否包含要查找的短语
var readline = require('readline');
var fs = require('fs');
function filterFile(phrase, input) {
return Promise((resolve, reject) => {
var lines = [];
let rl = readline.createInterface({
input: input
});
rl.on('line', (line) => {
if (line.includes(phrase, 0))
lines.push(line);
});
rl.on('close', () => {
let filteredLines = Buffer.from(lines);
return resolve(fs.createReadStream(filteredLines));
});
rl.on('error', (err) => {
return reject(err);
});
});
}
编辑过滤输出写入流示例 我们可以获取由
filterFile()
返回的结果流,并将其内容导入一个新文件,如下所示
var saveDest = './filteredLines.txt');
filterFile('object', inputStream)
.then((filteredStream) => {
let ws = fs.createWriteStream(saveDest);
filteredStream.once('error', (err) => {
return Promise.reject(err);
});
filteredStream.once('end', () => {
console.log(`Filtered File has been created at ${saveDest}`);
return Promise.resolve();
});
filteredStream.pipe(ws);
});
完美答案,只需确保输入为input:fs.createReadStream(uu dirname+/uploads/'+filename),因为在我的代码中,fstream是一个写流。@Baner看到我的更新,我将readline包装在一个承诺返回函数中,该函数使用一个短语进行过滤,并使用一个输入流,它以流的形式返回过滤后的行。如果发生错误,它将可读或拒绝。是的,谢谢您的回答。然而,就我所知,第二个参数是什么?includes(短语,0)。0是什么意思?@Baner,0是字符串中开始搜索匹配文本的索引。有没有办法说如果一行不包含此内容,请按一下?
var saveDest = './filteredLines.txt');
filterFile('object', inputStream)
.then((filteredStream) => {
let ws = fs.createWriteStream(saveDest);
filteredStream.once('error', (err) => {
return Promise.reject(err);
});
filteredStream.once('end', () => {
console.log(`Filtered File has been created at ${saveDest}`);
return Promise.resolve();
});
filteredStream.pipe(ws);
});