2012-08-13 3 views
0

7 개의 메시지가 포함 된 mbox 파일이 있습니다. "From -"문자열에 다음 코드로 구문 분석을 시도합니다. 결과 개체의 길이는 문자열이 7 번 발생하더라도 입니다. 문자열의 첫 번째 발생이 첫 번째 줄의 첫 번째 공간에 있더라도 구문 분석에는 앞에이 포함되어있는 것으로 보이고 첫 번째 요소의 값이 '0'으로 인쇄됩니다 (나머지 요소는 적절 함). 문자열). 추가 요소가있는 이유는 무엇입니까 (메서드 동작에 대한 내 코드입니까?)?자바 스크립트에서 mbox 구문 분석 - split() 동작

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); 

}); 

답변

1

실수는 fencepost error으로 알려져 있습니다. 문자열이 7 번 발생하더라도 결과는 사이에 8 개가 아닌 사이가됩니다.

예컨대

:

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

리턴 파이프 회만 I 첫 문자로 파이프하더라도

발생하더라도

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

, 생성 된 어레이는 동일 길이 :

'||'.split('|') 

반환

['','',''] 

논리는 동일하지만 지금 '''2', '1' 대체하고 있으며, '3'

0

분할 문자/문자열은 문자열의 첫 번째 부분은, 그것은 빈 인덱스를 추가 그 전에. ["","a","b","c","d","e","f"];

["a","b","c","d","e","f"];

var str = "XaXbXcXdXeXf"; 
console.log(str.split("X")); 

결과

var str = "aXbXcXdXeXf"; 
console.log(str.split("X")); 

결과

관련 문제