substr给出错误的值-javascript
出于某种原因,当我执行以下操作时:substr给出错误的值-javascript,javascript,string,substr,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其他东西 相反,我把它
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其他东西
相反,我把它作为tag1 tag2其他东西,焦点2。有人能给我解释一下吗?我觉得我快疯了哈哈,我试过手动输入:
input.substr(openParen + 1, 32)
但它给出了完全相同的结果。我以前使用过.substr多次,从未遇到过这种错误,我一定是遗漏了什么。您想使用substring: input.substringopenParen+1,closeParen
子字符串将开始索引和结束索引作为参数。substr采用的起始索引和长度参数不是您想要的。您想要使用substring:
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));
input.substringopenParen+1,closeParen
子字符串将开始索引和结束索引作为参数。substr接受一个开始索引和长度参数,这不是您想要的。第二个参数是长度!使用最后和第一个位置之间的差值。第二个参数是长度!使用最后一个位置和第一个位置之间的差异。技术上正确,但很明显OP的意思是子字符串而不是子字符串。@Afforess那又怎样?结果是一样的。我说你在技术上是正确的。这里没有争论。@Sacho我不这么认为。技术上是正确的,但很明显OP的意思是substring而不是substr。@Afforess那又怎样?结果是一样的。我说你在技术上是正确的。这里没有辩论。@Sacho我不这么认为。
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));