我知道我可以使用正则表达式来检查字符串是否仅包含空格,所以我的功能应该是
/^\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毫秒
但是我不知道是否还有其他方法,从速度上看,什么是最好的最佳方法。
答案 0 :(得分:1)
正则表达式被编译成有限状态自动机,该状态机(对于像您这样的真正正则表达式)进行了很好的优化,并保证了线性复杂度。
编译可能要花费一些时间,这将解释您最初的较长时间。以后对正则表达式的任何使用都无需再次执行。
trim
可能也进行了优化。两者具有相似的性能是有意义的。第三种选择显然更复杂。