0

我有一个 mbox 文件,其中包含 7 条消息。我尝试使用字符串“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);

});
4

2 回答 2

2

您所犯的错误称为栅栏错误。尽管字符串出现了七次,但这将导致字符串出现之间的不是七个而是八个部分。

例如:

'1|2|3'.split('|')

退货

['1','2','3']

即使管道只出现两次

即使我将管道作为第一个字符,生成的数组也是相同的长度:

'||'.split('|')

返回

 ['','','']

逻辑相同,但现在''已替换'1', '2', 和'3'

于 2012-08-13T18:00:34.083 回答
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"];

于 2012-08-13T18:03:09.353 回答