【发布时间】:2018-02-28 05:43:57
【问题描述】:
我有以下类型的文件,我使用 node.js 同步读取:
THIS IS A HEADLINE
12.X. p. 200
Bla. - blabla. - blablablala. - Some more bla. -
Bla. - Some blaa. - blabla. - Some extra bla. -
Bla. - blabla. - blablablala. - Some more bla. -
Bla. - blabla. - blablablala.
12.XI. p. 202
blabla. - blablablala. - Some more bla. -
Bla. - bla. - blablala. - Some more bla. -
Bla. - Some blaa. - blabla. - Some more bla. -
Bla. - blabla. - blablablala. - Some more bla. -
Bla. - blbla. - blablablala. -
我现在想解析这个文件。我想将标题放在一个变量中,将 ID 号 (12.X.)、页码 (p. 200) 和数据(Bla、blabla 等)放在一个数组中。
所以最后一切都会是这样的:
{
headline: "THIS IS A HEADLINE",
1: { id: "12.X."
pageno: 200
content: ['Bla.','blabla.','blablablala', ... ]
}
2: { id: "12.XI."
pageno: 202
content: ['blabla.','blablablala.','Some more bla', ... ]
}
}
我确实知道将所有blas 放入一个数组中,修剪它们等,但我不确定如何拆分标题以及如何查找包含 id 和页码的两行。
现在我有:
var fs = require('fs');
try {
var data = fs.readFileSync('files/file1.txt', 'utf8');
} catch(e) {
console.log('Error:', e.stack);
}
var arr = data.split('-');
for(var i=0; i< arr.length;i++) {
arr[i] = arr[i].replace(/\n/g, " ");
arr[i] = arr[i].trim();
}
我可能只看数组的第一个元素就可以得到标题,但如果我先将其拆分为-,我将不得不搜索我的数组,然后分别搜索每个块的第一个blas .我也不能假设12.X. p. 200 总是在第三行,12.XI. p. 202 在第一行。 9,因为这可能会改变。他们的价值观也会改变,所以我有点卡住了。
对不起,如果这是一个初学者的问题,我才刚刚开始!
【问题讨论】:
-
所以您的标题将位于不包含“-”的单独行中?
-
上述模式是一致的,这意味着您将始终拥有页眉,页码。和 id(将在一起),内容。
-
它是一致的,所以它将永远是:1.
Header,2.Page No. & Id,3.Content,然后是 4.Page No. & Id,然后是 5.Content再次。所以 Header 出现一次,而其他所有内容都会出现两次。
标签: javascript arrays node.js string parsing