因此,出于某种原因,当我在此代码中使用增量运算符时,它不起作用。我已经验证了我的变量是数字..不知道发生了什么。
var fs = require('fs')
, bt = require('buffertools')
var start = 0;
fs.readFile(process.argv[2], function(err, data) {
console.log(data);
while (bt.indexOf(data, '\n', start)) {
var nl = bt.indexOf(data, '\n', start); // nl is 40
console.log(start, nl); // 0, 40
console.log(data.slice(start, nl)); // works great!
start = nl++; // reset the offset past that last character..
console.log(start, typeof start); // start == 40? the heck? 'number'
process.exit(); // testing
//console.log(nl, start); 40, 40
}
});
编辑------
解决方案......
"use strict";
var fs = require('fs')
, bt = require('buffertools');
fs.readFile(process.argv[2], function(err, data) {
var offset = 0;
while (true) {
var nl = bt.indexOf(data, '\n', offset);
if (nl === -1) break;
console.log(data.slice(offset, nl));
offset = ++nl;
}
console.log(data.slice(offset));
});
谢谢!
答案 0 :(得分:4)
您正在寻找++nl
而不是nl++
,num++
会增加数字并返回旧值。
num++
是postfix increment operator - 正如您所看到的,其描述中写着“返回oldValue。”
++num
是prefix incremenet operator - 正如您所看到的,其描述为“返回newValue。”
顺便说一下,许多其他语言也是如此。
由于您以后根本没有更改nl
,因此可以将其写为:
start = nl + 1;
哪个更清楚。