无法使用 Node.js 以正确的格式将块数据推送到数组中
Unable to push chunk data into array in proper format using Node.js
我正在尝试读取 txt 文件并使用 Node.js
将每个单词推送到数组中,但根据我的代码,它没有以正确的格式发生。我在下面解释我的 txt
文件。
CHANGES:
CHANGES
==============================
v2.2.3 11/06/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
v2.2.2 01/06/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
v2.2.1 20/05/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
我的代码如下。
reader = fs.createReadStream('../../../CHANGES');
// Read and display the file data on console
let arr = [];
reader.on('data', function (chunk) {
arr.push(chunk.toString());
//console.log('chunk', chunk.toString());
console.log('chunk', arr);
});
这里我想把每个单词压入数组。但它给出了如下输出。
chunk [
'CHANGES\n' +
'==============================\n' +
'v2.2.3 11/06/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'===============================\n' +
'v2.2.2 01/06/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'===============================\n' +
'v2.2.1 20/05/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'==============================='
]
我期望的格式应该如下所示。
[
'CHANGES' ,
'v2.2.3',
'11/06/2021',
'Changes'
'- USxxxx abcd',
'- DExxxx xyz',
'v2.2.2 ',
'01/06/2021'
'Changes:',
'- USxxxx abcd',
'- DExxxx xyz',
'v2.2.1',
'20/05/2021',
'Changes:',
'- USxxxx abcd',
'- DExxxx xyz'
]
这里 /n and +
正在添加,但我需要读取每个单词并推入数组。有人可以建议我如何解决这个问题吗?
您应该能够为此使用 Readline 模块,从文件流创建一个 readline 接口,例如:
const fs = require("fs");
const readline = require('readline')
const reader = readline.createInterface({
input: fs.createReadStream('../../../CHANGES'),
});
// Skip empty lines and lines like '===='
function lineFilter(line) {
return (line.length > 0) && (!line.includes('=================='));
}
async function readLines() {
let arr = [];
for await (let line of reader) {
if (lineFilter(line)) {
// Split version lines.
if (/v\d\.\d\.\d/.test(line)) {
line.split(' ').forEach(f => arr.push(f.trim()));
} else {
arr.push(line);
}
}
}
console.log("Result:", JSON.stringify(arr, null, 2));
}
readLines();
我们将看到如下结果:
Result: [
"CHANGES",
"v2.2.3",
"11/06/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz",
"v2.2.2",
"01/06/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz",
"v2.2.1",
"20/05/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz"
]
我正在尝试读取 txt 文件并使用 Node.js
将每个单词推送到数组中,但根据我的代码,它没有以正确的格式发生。我在下面解释我的 txt
文件。
CHANGES:
CHANGES
==============================
v2.2.3 11/06/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
v2.2.2 01/06/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
v2.2.1 20/05/2021
Changes:
- USxxxx abcd
- DExxxx xyz
===============================
我的代码如下。
reader = fs.createReadStream('../../../CHANGES');
// Read and display the file data on console
let arr = [];
reader.on('data', function (chunk) {
arr.push(chunk.toString());
//console.log('chunk', chunk.toString());
console.log('chunk', arr);
});
这里我想把每个单词压入数组。但它给出了如下输出。
chunk [
'CHANGES\n' +
'==============================\n' +
'v2.2.3 11/06/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'===============================\n' +
'v2.2.2 01/06/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'===============================\n' +
'v2.2.1 20/05/2021\n' +
'\n' +
'Changes:\n' +
'- USxxxx abcd\n' +
'- DExxxx xyz\n' +
'\n' +
'==============================='
]
我期望的格式应该如下所示。
[
'CHANGES' ,
'v2.2.3',
'11/06/2021',
'Changes'
'- USxxxx abcd',
'- DExxxx xyz',
'v2.2.2 ',
'01/06/2021'
'Changes:',
'- USxxxx abcd',
'- DExxxx xyz',
'v2.2.1',
'20/05/2021',
'Changes:',
'- USxxxx abcd',
'- DExxxx xyz'
]
这里 /n and +
正在添加,但我需要读取每个单词并推入数组。有人可以建议我如何解决这个问题吗?
您应该能够为此使用 Readline 模块,从文件流创建一个 readline 接口,例如:
const fs = require("fs");
const readline = require('readline')
const reader = readline.createInterface({
input: fs.createReadStream('../../../CHANGES'),
});
// Skip empty lines and lines like '===='
function lineFilter(line) {
return (line.length > 0) && (!line.includes('=================='));
}
async function readLines() {
let arr = [];
for await (let line of reader) {
if (lineFilter(line)) {
// Split version lines.
if (/v\d\.\d\.\d/.test(line)) {
line.split(' ').forEach(f => arr.push(f.trim()));
} else {
arr.push(line);
}
}
}
console.log("Result:", JSON.stringify(arr, null, 2));
}
readLines();
我们将看到如下结果:
Result: [
"CHANGES",
"v2.2.3",
"11/06/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz",
"v2.2.2",
"01/06/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz",
"v2.2.1",
"20/05/2021",
"Changes:",
"- USxxxx abcd",
"- DExxxx xyz"
]