0

7つのメッセージを含むmboxファイルがあります。文字列「From-」の次のコードで解析しようとしています。文字列が7回しか出現しない場合でも、結果のオブジェクトの長さは8になります。文字列の最初の出現は最初の行の最初のスペースにありますが、解析にはそのの何かが含まれているようで、最初の要素の値の出力は「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

あなたが犯している間違いは、フェンスポスト エラーとして知られています。文字列が 7 回出現しますが、これにより、文字列の出現の間に7 つではなく 8 つの部分が生じます。

例えば:

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

戻り値

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

パイプは2回しか発生しませんが

最初の文字がパイプであっても、結果の配列は同じ長さになります。

'||'.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 に答える