关于字符串:在javascript中,indexof()和search()有什么区别?

In JavaScript, what is the difference between indexOf() and search()?

由于对javascript还比较陌生,我无法分辨何时使用这些脚本。

有人能帮我澄清一下吗?


如果需要正则表达式,请使用search()。否则,indexOf()会更快。


indexOf表示普通子串,search表示正则表达式。


搜索函数(这里有一个描述)采用一个正则表达式,它允许您与更复杂的模式、不区分大小写的字符串等匹配,而indexof(这里有一个描述)只与文本字符串匹配。但是,indexof还允许您指定开始索引。


我认为主要的区别是搜索接受正则表达式。

检查此参考:

  • 搜索
  • 索引

indexof()-它接受字符串文本或字符串对象,但不接受正则表达式。它还接受从零开始搜索的整数值,例如:

  • "BabyElephant".indexof("e");//给你4
  • "BabyElephant".indexof("e",5);//搜索结果为6从第6个位置或第5个索引开始。
  • var m=/e/;"BabyElephant".indexof(m);//给出-1,因为它没有接受正则表达式。
  • search()-接受字符串文本或字符串对象和正则表达式。但它不接受从中开始搜索的索引。


    搜索发现它与正则表达式匹配,但没有偏移量。indexof使用文本进行匹配,但具有偏移量。

    索引

    搜索


    indexof()和search()。

    • 两者共同

      i)返回第一次出现的搜索值

      ii)如果找不到匹配项,返回-1

      1
      2
      3
      let str='Book is booked for delivery'
      str.indexOf('b')   // returns position 8
      str.search('b')    // returns position 8
    • 在indexof()中特殊

      i)你可以给出开始搜索位置作为第二个参数。

      1
      2
      str.indexOf('k')   // 3
      str.indexOf('k',4) // 11 (it start search from 4th position)
    • 搜索中的特殊项()

    搜索值可以是正则表达式

    1
    2
    str.search('book') // 8
    str.search(/book/i)  // 0   ( /i =case-insensitive   (Book == book)

    参考


    没有regex,indexof和search之间没有实际的区别。

    下面的示例提供了一个实时演示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function FromSearch() {

      var str = document.getElementById("demo").innerText;
      var n = str.search("difference");
      document.getElementById("Location").innerHTML = n;
    }

    function FromindexOf() {
      var str = document.getElementById("demo").innerText;
      var n = str.indexOf("difference");
      document.getElementById("Location").innerHTML = n;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <p id="demo">Without a regex, there is no practical difference between indexOf and search

    </p>

    <button onclick="FromSearch()">From search</button>

    <button onclick="FromindexOf()">From indexOf</button>

    <p>
    Location of difference in the above sentence is:
    </p>

    <mark id="Location"></mark>