Javascript 解析问题

Javascript Parsing Issue

我正在尝试逐行解析文本,然后解析以 '\t' 作为分隔符的标记行。

到目前为止我有以下内容:

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" ); // (**)

我是不是搞错了?

您正在使用 j 作为所需子字符串的结束索引,但 .substr() 的第二个参数不是结束索引,它是要获取的字符数。 (它第一次工作是因为起始索引为 0,所以结束索引等于要使用的字符数。)

试试 .slice() instead. (Or substring(),但我更喜欢 .slice(),因为它更通用,而且打字更短。)

sstr = str.slice( i, j );