我需要一个客户端来上传文本文件。然后我想解析文本文件,使得只有单词" object"在它中是文本文件中唯一剩下的东西。我已经成功编写了上传部分。但是需要帮助编码如何使用" object"来解析行。不在里面。我的节点js代码如下。
答案 0 :(得分:1)
您可以使用Node核心部分的ReadLine API逐行遍历文件。您可以使用string.includes()
来确定您的行是否包含您要查找的词组。
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);
});
答案 1 :(得分:0)
步骤:1
使用 -
划分线条var x='i am object\ni m object';
var arr = x.split('\n');
步骤:2
对于每一行,使用对象regexp进行测试
var reg = /object/g
if(reg.test(<eachline>)){
// write new line
}else{
// do nothing
}