在JavaScript中比较字符串的一部分

28

如何比较字符串的一部分 - 例如,如果我想比较字符串A是否为字符串B的一部分。 我想找出这个:当 string A = "abcd"string B = "abcdef" 时,它需要返回true。 在JavaScript中该怎么做呢? 如果我使用 substring(start, end) ,我不知道要传递给 startend 参数哪些值。 有什么建议吗?


1
你需要提供更多的描述,比如一些例子或代码。 - polin
7个回答

27
你可以使用 indexOf
if ( stringB.indexOf( stringA ) > -1 ) {
  // String B contains String A
} 

19

就像这样:

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)

17

Javascript ES6/ES2015有String.includes()方法, 它几乎在所有浏览器上都具有兼容性除了IE. (但这又有什么新鲜事吗?)

let string = "abcdef";
string.includes("abcd"); //true
string.includes("aBc"); //false - .includes() is case sensitive

2
这就是上帝赐予我们 Babel 的原因。 - Micah B.
如果我们想要检查部分字符串是否在完整长度字符串的开头,该怎么办? - Steve W
@SteveW 然后您可以使用其他答案中列出的不同函数,例如 indexOf - mix3d

5

如果你处理的是较大的字符串,并且只需要验证字符串的开头,使用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;
  };
}

3

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


2

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

var patt = new RegExp(stringA, 'i');
if(stringB.match(patt)){                            
   return true;
}

1

您也可以尝试使用JavaScript搜索

if( stringA.search(stringB) > -1){
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接