为什么我在这个示例中处理我的字符串时会得到额外的','?

时间:2018-02-17 17:28:42

标签: javascript node.js return line feed

在nodejs中练习I / O,我尝试处理包含以下行的文本文件:

{ date: 2018-02-16T16:55:35.296Z, _id: 5a870d074dfade27c4c0ce35, id: '5546721

我逐行选择了npm包,我最初得到了我的代码:

let numbers = '';
const lr = new LineByLineReader('./resources/4501-ids.txt');
lr.on('line', function (line) {
    let x = line.lastIndexOf("'");
    let y = line.substring(x+1);          
    numbers += y + ', ';
    console.log(y);
    count++;
});

lr.on('end', function () {
    numbers = numbers.substring(0, numbers.lastIndexOf(', '));
    res.send(numbers);
});

我希望得到

2345, 23465, 66435, 

但我有:

2345, , 23465, , 66435, 

我怀疑它是以某种方式回车,所以我试着通过像if(y ===“\ r \ n”)那样提取它并且没有运气,最后将一行更改为:

if(y)
  numbers += y + ', ';

做到了。我已经完成了但是那里的那个是什么使得该行加倍并且可能扮演回车角色?

1 个答案:

答案 0 :(得分:1)

您的文本文件内容有点不清楚,(不完整的内容+输出与您提到的行不匹配)。但是根据您的预期输出,您可以将代码更改为

let numbers = [];
const lr = new LineByLineReader('./resources/4501-ids.txt');
lr.on('line', function (line) {
    let x = line.lastIndexOf("'");
    let y = line.substring(x+1);          
    numbers.push(y);
    console.log(y);
    //count++; //this is not needed numbers.length will give you this
});

lr.on('end', function () {
   // numbers = numbers.substring(0, numbers.lastIndexOf(', '));
    res.send(numbers.toString());
});

除此之外,如果资源文件的内容是json,你可以简单地导入/要求它,你将获得json对象,并且不需要逐行处理它。