如何检查一个字符串是否包含JavaScript中的子字符串?

通常我会期望一种方法,但似乎没有。String.contains()

检查此情况的合理方法是什么?


答案 1

ECMAScript 6 引入了 String.prototype.包括

const string = "foo";
const substring = "oo";

console.log(string.includes(substring)); // true

includes 但是,没有 Internet Explorer 支持。在 ECMAScript 5 或更早的环境中,使用 String.prototype.indexOf,当找不到子字符串时,它将返回 -1:

var string = "foo";
var substring = "oo";

console.log(string.indexOf(substring) !== -1); // true

答案 2

ES6 中有一个 String.prototype.include

"potato".includes("to");
> true

请注意,这在 Internet Explorer 或其他一些不支持 ES6 或不完整的旧浏览器中不起作用。为了让它在旧浏览器中工作,你可能希望使用像Babel这样的转译器,像es6-shim这样的填充子库,或者MDN的这个polyfill

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }

    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}