2014-10-27 23 views
1

出于某种原因,当我做到以下几点:SUBSTR给人错误的值 - 的JavaScript

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()吨,之前从未遇到过这种错误,所以我必须缺少一些东西。

+4

第二个参数是一个长度!使用最后和第一个位置之间的差异。 – Cheery 2014-10-27 04:17:30

回答

6

你想用的字符串:

input.substring(openParen + 1, closeParen);

substring需要一个起点和终点指标作为参数。 substr需要一个开始索引和长度参数,这不是你想要的。

+3

omg ... FACEPALM。谢谢。 – EmmaGamma 2014-10-27 04:19:50

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

在技术上是正确的,但很明显,OP意味着“substring”而不是“substr”。 – Afforess 2014-10-27 04:20:44

+0

@Afforess等等呢?结果是一样的。 – Cheery 2014-10-27 04:21:08

+2

我说你在技术上是正确的。这里没有辩论。 – Afforess 2014-10-27 04:21:34