2014-10-27 21 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