我有一个包含7条消息的mbox文件。我尝试使用字符串“From - ”上的以下代码解析它。生成的对象长度 8 ,即使只有7次出现的字符串。即使第一次出现的字符串位于第一行的第一个空格处,解析似乎包含之前的,并且第一个元素的值的打印输出为'0'(剩下的元素是合适的字符串)。为什么还有一个额外的元素(是我的方法行为代码)?
var fs = require('fs');
// Read in the text file
fs.readFile( '../Data/Inbox 6Msg Mbox.txt', function (err, data) {
if (err) {
throw err;
}
// Convert file to a string object
var unParsed = data.toString();
// Split the text into an array of strings where each
// element is a message
var indivMessages = unParsed.split("From -");
console.log(indivMessages.length);
});
答案 0 :(得分:1)
你犯的错误被称为fencepost error。虽然你有七次出现这个字符串,但这会导致之间的七个而不是八个部分出现字符串。
例如:
'1|2|3'.split('|')
返回
['1','2','3']
即使管道只出现两次
即使我将管道作为第一个字符,结果数组也是相同的长度:
'||'.split('|')
返回
['','','']
逻辑相同,但现在''
已取代'1'
,'2'
和'3'
答案 1 :(得分:0)
当拆分字符/字符串是字符串的第一部分时,它会在它之前添加一个空索引。
var str = "aXbXcXdXeXf";
console.log(str.split("X"));
结果为["a","b","c","d","e","f"];
var str = "XaXbXcXdXeXf";
console.log(str.split("X"));
结果为["","a","b","c","d","e","f"];