检查子字符串是否位于另一个字符串的特定位置的最快方法

时间:2016-07-25 17:26:42

标签: javascript string performance

我有字符串(长度50-2000)和潜在子字符串(长度2-8),它只能从特定位置开始(它可能出现在别处,但我不在乎)。我需要测试大量的字符串,所以速度是关键。那么有更快的方式:

var q = baseString.indexOf(searchString, assumedIndex) === assumedIndex; 

var q = baseString.substr(assumedIndex, searchString.length) === searchString; 

1 个答案:

答案 0 :(得分:0)

请记住Amit在评论中所说的内容,我想我可能会添加一个替代方案(可能)比至少substr方法更快:

var q = baseString.startsWith(searchString, assumedIndex); 

来自MDN

  

startsWith()方法确定字符串是否以。开头   另一个字符串的字符,视情况返回truefalse

小例子:

> "Hello world!".startsWith("world!",6)
< true

我认为它可能更快的原因是因为polyfill(如下所示)直接用substr实现,除了浏览器实现将本地实现并且可能没有字符串复制。所以它应该至少和你建议的一样快。

填充工具:

if (!String.prototype.startsWith) {
    String.prototype.startsWith = function(searchString, position){
      position = position || 0;
      return this.substr(position, searchString.length) === searchString;
  };
}