我只是想使用Node.js将文本文件中的几行文本连接起来。 结果和预期结果如下所示,并不相同。我不确定为什么要得到我要得到的结果,它似乎覆盖了前一行。
目标:合并行和同一行中的以下子项
app.js
'use strict'
const fs = require('fs')
let targetRegex = /Line.*/;
let concatStatement = '';
fs.readFileSync('input.txt').toString().split('\n')
.forEach(function (line) {
if (targetRegex.test(line)) {
concatStatement = line;
}
else {
concatStatement += line
console.log(concatStatement);
}
});
input.txt
Line11
SubA
Line22
SubB
结果
SubA11
SubB22
预期
Line11SubA
Line22Subb
答案 0 :(得分:1)
我在ubuntu上试用了该程序,并产生了您期望的输出。
您可能遇到的问题是,在forEach的每次迭代中都将返回的行变量在开始时有回车符,因此它会覆盖字符。
我通过有意在行变量的开头添加回车符来验证这一点,并开始产生您要获得的输出。
'use strict'
const fs = require('fs')
let targetRegex = /Line*/;
let concatStatement = '';
fs.readFileSync('input.txt').toString().split('\n')
.forEach(function (line) {
line = '\r' + line
if (targetRegex.test(line)) {
concatStatement = line;
}
else {
concatStatement += line
console.log(concatStatement);
}
});
这产生
SubA11
SubB22
如果我对此行发表评论
line = '\r' + line
然后它会在我的平台上产生您期望的输出。
解决方案
要解决此问题,可以检查input.txt文件的行分隔符,并使用正确的分隔符作为文本分隔符。