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 );
我正在尝试逐行解析文本,然后解析以 '\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 );