23

如何比较字符串的一部分 - 例如,如果我想比较字符串 A 是否是字符串 B 的一部分。我想知道这一点:何时string A = "abcd"string B = "abcdef"需要返回 true。我如何在 JavaScript 中做到这一点?如果我使用substring(start, end)我不知道将什么值传递给startandend参数。有任何想法吗?

4

7 回答 7

27

您可以使用indexOf

if ( stringB.indexOf( stringA ) > -1 ) {
  // String B contains String A
} 
于 2012-12-12T06:21:11.273 回答
18

像这样:

var str = "abcdef";
if (str.indexOf("abcd") >= 0)

请注意,这是区分大小写的。如果你想要一个不区分大小写的搜索,你可以写

if (str.toLowerCase().indexOf("abcd") >= 0)

或者,

if (/abcd/i.test(str))

以及不区分大小写搜索的通用版本,您可以设置任何大小写的字符串

if (stringA.toLowerCase().indexOf(stringB.toLowerCase()) >= 0)
于 2012-12-12T06:28:24.163 回答
13

Javascript ES6/ES2015 有String.includes(),几乎兼容所有浏览器,除了 IE。(但还有什么新东西?)

let string = "abcdef";
string.includes("abcd"); //true
string.includes("aBc"); //false - .includes() is case sensitive
于 2018-11-06T13:35:52.033 回答
4

如果您正在处理大字符串并且您只需要验证字符串的开头,则使用 indexOf 或 match 会不必要地缓慢。更好的解决方案是使用 startsWith() 或其等效函数——来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith

if (!String.prototype.startsWith) {
    String.prototype.startsWith = function(searchString, position){
      position = position || 0;
      return this.substr(position, searchString.length) === searchString;
  };
}
于 2016-04-07T22:28:07.063 回答
3

"abcdef".indexOf("abcd") !== -1应该没问题

于 2012-12-12T06:21:07.670 回答
1

你也可以试试javascript搜索

if( stringA.search(stringB) > -1){
}
于 2012-12-12T06:25:16.267 回答
1

使用正则表达式可能会对您有所帮助。

var patt = new RegExp(stringA, 'i');
if(stringB.match(patt)){                            
   return true;
}
于 2012-12-12T06:27:18.797 回答