JS中关于indexOf()的使用方法-BanYuner

今天需要用到一个函数,用来检测某个字符串中是否含有指定的字符,之前PHP中我们可以通过explode这个函数来确定,但是今天介绍的是JS中通过indexOf()这个方法来实现,同时本文也提供了其余的几种方法供大家使用,看大家喜欢什么样的方法了。

首先我们需要了解到一下indexOf()是干什么用的,下面的介绍来自w3cschool:

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的

方法一: indexOf()

那么这个函数的标准语法如下:

我们直接通过下方的例子来进行说明,通过例子看功能是最直接也是最易懂的:

上面的代码就是检测123中是否含有2,例子中也标注了结果,这个表达式(str.indexOf(“2”) != -1)为真,下面的例子来自w3cschool:

上面的例子输出的结果为:

第一个是从0开始的,开始也说了,这个函数的字符位是从0开始的,第二个为-1,代表字符串中并不含有指定字符,第三个为6,也就是说,从第7个字符开始匹配出现了指定字符串。

方法二:match()

通过字符串匹配的方式可以同样匹配出是否含有指定字符串,可能包含多个而已。

方法三: search()

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。这个方法我个人觉得也是一个不错的选择了,但是和indexOf()存在什么不一样呢?这里我百度了一下,有兴趣的用户可以仔细看看:

首先要明确search()的参数必须是正则表达式,而indexOf()的参数只是普通字符串。indexOf()是比search()更加底层的方法。

如果只是对一个具体字符串来查找,那么使用indexOf()的系统资源消耗更小,效率更高;如果是查找具有某些特征的字符串(比如查找以a开头,后面是数字的字符串),那么indexOf()就无能为力,必须要使用正则表达式和search()方法了。

很多时候用indexOf()不是为了真的想知道子字符串的位置,而是想知道长字符串中没有包含这个子字符串。如果返回索引值是-1,那么说明没有:不等于-1,那么就是有。

所以一般情况下indexOf比search更省资源。

总结

目前来说,上面的三种方法已经基本满足日常需求,如果你不是一个高手或者不是一个专门从事某些方面的技术性人员,那么我个人觉得上面的三种基本可以够大家用了。

  • 官方微信公众号:BanYuner_offical 微信号:lao4jidididi
  • 官方微信公众号:BanYuner_offical