【问题标题】:How to check from starting position of string contains a string如何从字符串的起始位置检查是否包含字符串
【发布时间】:2020-09-14 07:27:39
【问题描述】:

我想检查一个字符串是否包含另一个字符串。如果包含它应该显示在指定的网格中。

在我的列表中,我有 ["abcd","fabcdgh","fgh","sdfgabcd","hgtabc","abcdefg"] 之类的标题,我想检查“abcd”。 这是我的代码

        <div class="picture-item__details">
        <figcaption class="picture-item__title"><?php echo $title ?></figcaption>
        </div>

  const searchText = evt.target.value.toLowerCase();
  this.shuffle.filter((element, shuffle) => {

  const titleElement = element.querySelector('.picture-item__title');
  const titleText = titleElement.textContent.toLowerCase().trim();

   return (titleText).indexOf(searchText) !== -1;

    });

在 html div 中,我动态获取标题。在顶部我有一个搜索栏,我从那里获取搜索文本。 现在我想检查搜索栏是否包含“abcd”它应该只返回[“abcd”,“abcdefg”],而不是在字符串中间搜索。 我该使用哪个函数来找出标题是否包含从起始位置开始的“abcd”检查?

任何帮助表示赞赏...在此先感谢。

【问题讨论】:

    标签: javascript jquery search contains indexof


    【解决方案1】:

    您只需将代码的返回语句更改为

    return (titleText).indexOf(searchText) === 0;
    

    另外,Javascript 现在有一个方便的 startsWith 方法 - 所以你也可以把你的退货声明改成这个

    return titleText.startsWith(searchText)
    

    【讨论】:

    • 添加 return titleText.startsWith(searchText) 后,它没有返回任何结果。甚至没有得到任何控制台错误来检查
    • 我明白了,你有可能在 indexOf 的第一个解决方案!
    • 通过使用 indexOf 我们如何实现预期的结果。实际上我是 javascript 的新手。所以我无法获得预期的结果。我正在使用 shuffle 库。
    • 对于 indexOf,它返回第二个字符串在第一个字符串中的索引(位置)。因此,当它为 0 时,意味着第二个字符串 searchText 位于第一个字符串 titleText 的位置 0 中。位置 0 意味着它在开始时是正确的。如果为 1,则表示它在第二个位置。又名 bcabcd 中找到。检查它是否为!== -1,相当于检查第二个字符串是否出现在第一个字符串的某处
    • 其实我没有得到你的建议。以前我尝试使用 return (titleText[0]).indexOf(searchText) !== -1;如果我在搜索字段中给出 a 它返回 ["abcd","abcdefg"] 但在搜索中给出 "ab"字段它什么都不返回
    猜你喜欢
    • 2017-09-23
    • 2011-11-09
    • 2013-05-18
    • 1970-01-01
    • 2014-03-02
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多