检查字符串的最快方法是在JavaScript中包含另一个子字符串?

丁洪洲:

我正在处理JavaScript的性能问题。所以我只想问:检查一个字符串是否包含另一个子字符串的最快方法是什么(我只需要布尔值)?您能否提出您的想法和示例代码片段?

费利克斯·克林(Felix Kling):

您有两个可能性:

  1. 正则表达式

    (new RegExp('word')).test(str)
    // or
    /word/.test(str)
    
  2. indexOf

    str.indexOf('word') !== -1
    

正则表达式似乎更快(至少在Chrome 10中如此)。

性能测试-干草堆短
性能测试-干草堆长


2011年更新:

不能肯定地说哪种方法更快。浏览器之间的差异是巨大的。虽然在Chrome 10中indexOf似乎更快,但在Safari 5 indexOf中显然比任何其他方法都慢。

您必须看到并尝试自我。这取决于您的需求。例如,不区分大小写的搜索使用正则表达式会更快。


更新2018:

为了使人们免于自己运行测试,以下是大多数常见浏览器的当前结果,这些百分比表示性能比第二快的结果有所提高(在不同的浏览器中有所不同):

Chrome: indexOf(〜98%快)<-- wow
Firefox:缓存RegExp(
〜18%快)IE11:缓存RegExp(〜10%快)
Edge: indexOf(〜18%快)
Safari:缓存RegExp(〜0.4%快)

请注意,缓存的RegExp是:var r = new RegExp('simple'); var c = r.test(str);相对于:/simple/.test(str)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查子字符串是否包含另一个子字符串 c#

检查字符串是否是另一个Java的子字符串

检查字符串是否包含另一个字符串的3个字符长的子字符串

如何在 dart/flutter 中检查一个字符串是否包含另一个子字符串

如何替换包含另一个子字符串的行中的子字符串

如何删除包含子字符串但不包含另一个子字符串的项目

检查字符串是否包含另一个字符串

如何检查字符串是否包含另一个字符串-Laravel

使用LINQ检查字符串的字符是否包含在另一个字符串中

JavaScript检查字符串是否在另一个变量中至少包含三个字符

检查列表中的每个字符串(所有字符串)是否至少是另一个字符串中的一个子字符串

我们可以检查字符串是否包含在另一个不区分大小写的字符串中吗?

如何在Java中以不区分大小写的方式检查字符串是否包含另一个字符串?

数据表行检查字符串在 C# 中包含另一个字符串

如何识别范围是否包含一个子字符串但不包含另一个

检查字符串是否包含列表中字符串的最快方法

检查字符串列表中是否有另一个字符串

ORACLE SQL在基于另一个子字符串的大字符串中动态替换子字符串

在 JavaScript 中检查字符串是否仅包含空格的最快方法是什么?

检查一个字符串是否在另一个字符串中的任何字符的最佳方法javascript

检查字符串是否包含两个子字符串中的任何一个是否返回true

打印一个子列表,该子列表包含另一个列表中的所有字符串,而不必直接匹配

如何检索在另一个子字符串之前的数字子字符串

在Swift中将子字符串与另一个子字符串匹配

如何检查字符串“ StartsWith”是否为另一个字符串?

如何用一个字符串中的另一个子字符串替换一个子字符串的所有出现?

PowerShell-如何检查字符串以查看是否包含带通配符的另一个字符串?

遍历数组以检查字符串是否包含另一个字符串

包含方法,检查字符串前一个字符