2016-07-08 2 views
0

Я пытаюсь разобрать текст по строкам, а затем разбор строки на токенах с '\t' в качестве разделителя.Jarscript Parsing Issue

До сих пор у меня есть следующие:

str = "a\tb\tc\n1\t2\t3\nx\t\y\tz" 
 
console.log(str + "\n"); 
 
    
 
i = 0; 
 
j = str.indexOf("\n", i); 
 

 
sstr = str.substr(i, j); 
 
    
 
tokens = sstr.split('\t'); 
 
    
 
console.log(tokens + "\n"); 
 
    
 
i = j + 1; 
 
j = str.indexOf("\n", i); // (*) 
 
    
 
sstr = str.substr(i, j); 
 
    
 
console.log(sstr + "\n"); 
 
    
 
tokens = sstr.split("\t"); 
 
console.log(tokens + "\n"); // (**)

Почему я получаю следующее:

1,2,3 
x,y,z 

вместо следующего:

1,2,3 

по адресу console.log(tokens + "\n"); // (**)

Я допустил ошибку?

+1

Почему вы не начинают, разделив на '«\ п»'? – nnnnnn

+0

@nnnnnn оригинал 'str' имеет 10000+ строк, и мне нужно обрабатывать его по очереди. – lllll

+0

@nnnnnn Спасибо. Мне просто нужно 'j - i' вместо' j' – lllll

ответ

0

Вы используете j в качестве конечного индекса нужной подстроки, но второй аргумент .substr() не является конечным индексом, это количество символов, которое нужно взять. (Он работает в первый раз, потому что индекс начала равен 0, поэтому конечный индекс равен количеству символов, которые нужно взять.)

Попробуйте .slice(). (Или substring(), но я предпочитаю .slice(), потому что он является более универсальным, и короче типа.)

sstr = str.slice(i, j); 

 Смежные вопросы

  • Нет связанных вопросов^_^