在javascript中过滤文件中的特定行
我有这个txt文件在javascript中过滤文件中的特定行,javascript,node.js,json,Javascript,Node.js,Json,我有这个txt文件 ------------------------------------------------------------------------- Version : 2.3 Date : 2019-06-21 New Features: ------------- ID : 1P des : toto ID : 2P des : tata Fixed Bugs: ----------- ID
-------------------------------------------------------------------------
Version : 2.3
Date : 2019-06-21
New Features:
-------------
ID : 1P
des : toto
ID : 2P
des : tata
Fixed Bugs:
-----------
ID : 2D
des : lala
-------------------------------------------------------------------------
Version : 2.2
Date : 2019-06-21
New Features:
-------------
ID : 1O
des : toto
ID : 2o
des : tata
Fixed Bugs:
-----------
ID : 2O
des : lala
-------------------------------------------------------------------------
Version : 2.1
Date : 2019-06-21
New Features:
-------------
ID : 1E
des : toto
ID : 2E
des : tata
Fixed Bugs:
-----------
ID : 2D
des : lala
-------------------------------------------------------------------------
Version : 2.0
Date : 2019-06-21
New Features:
-------------
ID : 1P
des : toto
ID : 2P
des : tata
Fixed Bugs:
-----------
ID : 2D
des : lala
我有一个test.js文件:
// Some script
diffList.push({
components: element,
newVersion: listComponentsFromHead[key], //2.3
oldVersion: listComponentsFromLastTag[key], // 2.1
});
diffList.forEach((element) => {
try {
const data = fs.readFileSync('file.txt', 'UTF-8');
const lines = data.split('\n');
lines.forEach((line) => {
if(line.startsWith("Version : " + element.newVersion)){
console.log(line);
}
});
} catch (err) {
console.error(err);
}
})
现在,我正在解析并只得到所有以版本开头的行
下一步我需要做的是检索newVersion和OldVersion之间数组中的所有ID
例如,在我的例子中,在2.3和2.1之间,我想要这样的东西:
- [1P,2P,2D,1O,2O,2O,1E,2E,2D]
2) 在解析模式期间,使用正则表达式提取
id
值并推送到数组
3) 当您找到旧版本行时,意味着您可以停止解析id值 此示例代码应该可以工作,请尝试替换您的
Try
块。希望这有帮助
const data = fs.readFileSync("file.txt", "UTF-8");
const lines = data.split("\n");
let parseMode = false;
const results = []; // array of arrays.
const arr = []; // array for one diff
lines.forEach(line => {
if (line.startsWith("Version : " + element.newVersion)) {
parseMode = true;
arr.length = 0; // initialize arr to be empty
} else if (line.startsWith("Version : " + element.oldVersion) && parseMode) {
parseMode = false;
results.push(arr);
} else if (parseMode) {
// extract the id using the regex.
const id = line.match(/^ID\s+:\s(.+)/)[1];
arr.push[id];
}
});
console.log(results);
出现错误:“无法读取null的属性“1”您在regex@Siva Kondapi Venkataoh中所说的[1]是什么意思。很高兴听到@fzefzefzef.)