以下代码读取文件并将每一行转换为数组项:
fs.readFile('en.txt', 'utf8', function (err, data) {
if (err) {
return console.log(err)
}
enStrings = data.split(/[\r\n]+/g)
}
en.txt
看起来像这样:Line 1
Line 2
Line 3
但我很困惑。
console.log(enStrings)
输出这个:[ 'Line 1', 'Line 2', 'Line 3', '' ]
为什么要添加最后一个空项目?以及如何删除它?
最佳答案
如果您的文本文件有一个尾随换行符,就会发生这种情况,这很常见。
为什么在拆分前不使用 trim
?
enStrings = data.trim().split(/[\r\n]+/g);
或者,您可以在拆分之前仅删除尾随的换行符。
enStrings = data.replace(/[\n\r]+$/, '').split(/[\r\n]+/g)
但是,如果您的数据很长,您可能希望避免在拆分之前重新创建整个字符串的性能损失。如果是这种情况,您可以使用以下内容将其弹出。
if (enStrings.length && !enStrings[enStrings.length-1]) {
enStrings.pop();
}
关于JavaScript split 添加一个额外的空数组项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33932166/