出于某种原因,我的indexOf 2nd arg(从何处开始搜索)无效。它总是返回4或-1。 字符串测试=" Bob jr"我在about:blank:
上使用内置的JavaScript控制台> var test = "Bob jr";
> test.indexOf('j', 0);
< 4 = $3
> test.indexOf('j', 1);
< 4 = $3
> test.indexOf('j', 12);
< -1 = $2
为什么这不起作用,我怎样才能使它正常工作?
答案 0 :(得分:5)
无论您是开始查看0
还是索引1
,j
仍然是索引4
。
你的最后一个例子证明了 的论点是有效的,因为你说是在j
之后(完全超出字符串的结尾)开始,当然,它没有&#39;找到它。
让我们看看indexOf
的第二个参数:
var str = "j and j and j x";
snippet.log("Search string: '" + str + "'");
for (var n = 0; n < str.length; ++n) {
test(str, n);
}
function test(s, start) {
var index = s.indexOf("j", start);
snippet.log("Starting at " + start + ": " + index);
}
&#13;
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
如果你想知道你所指定的索引到j
后多远,你可以通过两种方式做到这一点:
从您得到的结果中减去索引:
console.log("Distance: " + (test.indexOf('j', 1) - 1));
搜索子字符串:
console.log("Distance: " + test.substring(1).indexOf('j');
答案 1 :(得分:0)
答案 2 :(得分:0)
indexOf总是在第一次出现的指定值starting the search at fromIndex. 的调用String对象中返回索引。返回值不变的原因是&#34; j&#34;仍然是字符串中的第5个字符,无论您是否开始在字符串中搜索几个字符。