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

时间:2018-12-07 09:37:32

标签: javascript

我知道我可以使用正则表达式来检查字符串是否仅包含空格,所以我的功能应该是

/^\s+$/.test(myString);

我还可以使用:

0 === myString.trim().length

var spaces = [" ", "\f", "\n", "\r", "\t", "\v", "\u00A0", "\u2028", "\u2029"];
for (var i = 0; i < myString.length; i++) {
    if (spaces.indexOf(str.charAt(i)) < 0) return false;
}
return true;

我用一个包含10K字符串(5K只是空白)的数组(最多100个字符)测试了它们,结果如下:

第一次测试: 正则表达式方法:35毫秒 修剪方法:6毫秒 比较方法:29毫秒

第二项测试(因此可能具有某种缓存): 正则表达式方法:6毫秒 修剪方法:7毫秒 比较方式:30毫秒

但是我不知道是否还有其他方法,从速度上看,什么是最好的最佳方法。

1 个答案:

答案 0 :(得分:1)

正则表达式被编译成有限状态自动机,该状态机(对于像您这样的真正正则表达式)进行了很好的优化,并保证了线性复杂度。

编译可能要花费一些时间,这将解释您最初的较长时间。以后对正则表达式的任何使用都无需再次执行。

trim可能也进行了优化。两者具有相似的性能是有意义的。第三种选择显然更复杂。

相关问题