簡體   English   中英

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=面包

您可以使用以下示例:

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文檔 該頁面還提供了一個polyfill。 有關可用性,請參見caniuse

但是,在Chrome 41中,本機實現比使用slice的最快替代方案慢25%:

function endsWithSlice(string1, string2) {
  return string1.slice(-string2.length) === string2;
}

另一個答案中提供的regexp解決方案要慢50%。 MDN polyfill慢38%,但仍快於regexp。 參見jsperf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM