首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查子字符串是否在另一个字符串的特定位置的最快方法

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

Stack Overflow用户
提问于 2016-07-26 01:26:42
回答 1查看 198关注 0票数 0

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

代码语言:javascript
运行
复制
var q = baseString.indexOf(searchString, assumedIndex) === assumedIndex; 

代码语言:javascript
运行
复制
var q = baseString.substr(assumedIndex, searchString.length) === searchString; 
EN

回答 1

Stack Overflow用户

发布于 2016-07-28 22:20:34

记住阿米特在评论中所说的话,我想我最好添加一个(可能)比substr方法更快的替代方法:

代码语言:javascript
运行
复制
var q = baseString.startsWith(searchString, assumedIndex); 

来自MDN

startsWith()方法确定一个字符串是否以另一个字符串的字符开头,并根据需要返回truefalse

小示例:

代码语言:javascript
运行
复制
> "Hello world!".startsWith("world!",6)
< true

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

多边形填充:

代码语言:javascript
运行
复制
if (!String.prototype.startsWith) {
    String.prototype.startsWith = function(searchString, position){
      position = position || 0;
      return this.substr(position, searchString.length) === searchString;
  };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38573988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档