Javascript - 如何使用 .indexOf 而不仅仅是开头来查找特定字符串

Javascript - How to find specific string using .indexOf instead of just the beginning

如果在用户 URL 中找到字符串,我正在尝试 运行 一些代码。但是,如果字符串后面没有其他内容,我只希望它 运行 。字符串出现在 URL 的末尾,像这样。

http://shop.com/?searchTerm=bread

我的代码:

if (window.location.search.indexOf('searchTerm=bread') > -1) {
do stuff;
}

这很好用,但问题是如果字符串是 'searchTerm=bread+rolls',它仍然会 运行 我不希望这种情况发生。有什么想法吗?

我还应该提到 URL 中还有许多其他参数会发生变化,但我要针对的参数总是在最后。我也无法使用任何库。

http://shop.com/?p=kjsl&g=sdmjkl&searchTerm=bread

您可以使用以下示例:

var url = window.location.search;
if (/searchTerm=bread$/.test(url)) {
    do stuff;
}
else if (/searchTerm=cheese\+slices$/.test(url)) {
    do stuff;
}

$ 表示行尾。 \ 反斜杠用于转义特殊字符,如 +

希望对您有所帮助:)

你想要String.prototype.endsWith。参见 MDN docs. That page also provides a polyfill. For availability, see caniuse

但是,在 Chrome 41 中,此本机实现比使用 slice:

的最快替代方案慢 25%
function endsWithSlice(string1, string2) {
  return string1.slice(-string2.length) === string2;
}

另一个答案中提供的正则表达式解决方案慢了 50%。 MDN polyfill 慢了 38%,但仍然比正则表达式快。参见 jsperf