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

通常我会期望一个String.contains()方法,但似乎并不存在。

什么是合理的方法来检查这个?


这里列出了当前的可能性:

1.(ES6) includes要回答

var string = "foo",
    substring = "oo";
string.includes(substring);

2. ES5和更老的indexOf

var string = "foo",
    substring = "oo";
string.indexOf(substring) !== -1;

String.prototype.indexOf返回另一个字符串中字符串的位置。 如果未找到,它将返回-1

3. search要回答

var string = "foo",
    expr = /oo/;
string.search(expr);

4. lodash包括 -要回答

var string = "foo",
    substring = "oo";
_.includes(string, substring);

5. RegExp-要回答

var string = "foo",
    expr = /oo/;  // no quotes here
expr.test(string);

6.匹配 -要回答

var string = "foo",
    expr = /oo/;
string.match(expr);

性能测试显示,如果涉及速度问题, indexOf可能是最佳选择。


您可以使用以下语句轻松地向String添加contains方法:

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

注意:请参阅下面的注释以获取不使用此参数的有效参数。 我的建议:使用你自己的判断。

或者:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }

您的代码存在的问题是JavaScript区分大小写。 你的方法调用

indexof()

实际上应该是

indexOf()

尝试修复它,看看是否有帮助:

if (test.indexOf("title") !=-1) {
    alert(elm);
    foundLinks++;
}
链接地址: http://www.djcxy.com/p/21.html

上一篇: How to check whether a string contains a substring in JavaScript?

下一篇: >" operator in C++?