substr给出错误的价值 - javascript

时间:2014-10-27 04:13:32

标签: javascript string substr

出于某种原因,当我执行以下操作时:

var input = 'focus name (tag1 tag2 OTHER,STUFF) focus 2 (MORE)';
var openParen = input.indexOf('(');
var closeParen = input.indexOf(')');
var parenStr = input.substr(openParen + 1, closeParen - 1);

我希望parenStr等于"tag1 tag2 OTHER,STUFF"

相反,我将其视为"tag1 tag2 OTHER,STUFF) focus 2 "。任何人都可以向我解释这个吗?我觉得我疯了哈哈,我试过手动输入:

input.substr(openParen + 1, 32)

但它给出了完全相同的结果。我之前已经使用了.substr()吨次并且之前从未遇到过这种错误,我必须遗漏一些东西。

2 个答案:

答案 0 :(得分:6)

您打算使用子字符串:

input.substring(openParen + 1, closeParen);

substring将起始和结束索引作为参数。 substr采用起始索引和长度参数,这不是您的意图。

答案 1 :(得分:-2)

var input = 'focus name (tag1 tag2 OTHER,STUFF) focus 2 (MORE)';
var openParen = input.indexOf('(');
var closeParen = input.indexOf(')');
alert(input.substr(openParen + 1, closeParen - openParen - 1));