JavaScript判断字符串包含子串的几种方法对比

作者:代码拾荒时间:2026-10-28 20:45:20浏览:356

本文详解JavaScript中判断字符串是否包含子串的三种常用方法:indexOf、search和contains。通过代码示例对比各方法的返回值差异、语义清晰度及浏览器兼容性,重点分析indexOf的索引判断、search的正则支持以及ECMAScript 6草案中contains方法的现状与第三方库实现。

JavaScript判断字符串包含子串的几种方法对比

本文介绍JavaScript中判断字符串是否包含子串的几种实现方式,供读者参考。

在前端开发过程中,经常需要判断一个字符串中是否存在特定的子串。我们需要找到一种能直接表达“包含”语义的方法,使其返回布尔值true或false。

String.prototype.indexOf和lastIndexOf

一、String.prototype.indexOf和String.prototype.lastIndexOf

这两个方法是最常见的选择。如果字符串包含子串,它们返回大于等于0的索引值;否则返回-1。这种返回值形式并未直接满足我们获取布尔值的需求。

代码如下:

var str = "My blog name is Benjamin-专注前端开发和用户体验",
substr = "Benjamin";
 
function isContains(str, substr) {
return str.indexOf(substr) >= 0;
}
 
//true
console.log(isContains(str, substr));

二、String.prototype.search

String.prototype.search

接着考虑String.prototype.search方法。由于search方法的参数可以是正则表达式,其行为与indexOf类似,即返回索引或-1。

代码如下:

var str = "My blog name is Benjamin-专注前端开发和用户体验",
substr = "Benjamin";
 
function isContains(str, substr) {
return new RegExp(substr).test(str);
}
 
//true
console.log(isContains(str, substr));

该方法相比indexOf有所改进,直接返回true或false,且方法名test更具语义性。

String.prototype.contains

三、String.prototype.contains

代码如下:

var str = "My blog name is Benjamin-专注前端开发和用户体验",
substr = "Benjamin";
 
function isContains(str, substr) {
return str.contains(substr);
}
 
//true
console.log(isContains(str, substr));

目前只有Firefox浏览器支持此方法,它仍处于ECMAScript 6草案阶段。该方法符合前述的理想情况。详细信息可参考相关文档。若需使用contains方法,可参考第三方库string.js,本站提供下载链接。其源码实现如下:


代码如下:

contains: function(ss) {
return this.s.indexOf(ss) >= 0;
},

其他方法有待补充。

至于性能方面,哪种方法执行更快,仍需实际测试验证。感兴趣的朋友可以动手测试。

希望本文所述内容对大家的JavaScript程序设计有所帮助。

作者最新文章