通常我们要对用户的输入内容进行过滤前后的空格操作,这里使用一种混合方法来进行过滤,主要思想是:1.使用正则表达式过滤字符串头部空白。2.使用非正则表达式过滤尾部空白。
String.prototype.trim=function(){
var str=this.replace(/^s+/,"");
ws=/s/;
while(ws.test(str.charAt(end))){
end--;
}
return str.silce(0,end+1);
}
这种混合过滤方法在过滤一小段空白时速度非常快,在处理头部有很多空白或者仅由空白组成的字符串时,也没有性能风险(尽管在处理尾部长空白时仍然存在不足),尽管在这里使用正则表达式会带来一些性能开销,但它能让你直接使用浏览器定义的空白字符列表,以保持简便和更好的兼容性。
所有的trim方法的总的趋势是:在基于正则表达式的方案中,字符串的总长度比修剪掉的字符数量更影响性能,而非正则表达式方案从字符串末尾反向查找,不受字符串总长度的影响,但明显收到修剪空格的数量的影响。简单地使用两次子正则表达式在各种浏览器处理不同内容长度的字符串时,提供了更一致的性能表现,所以它被证明是最周全的解决方案,混合方案在处理长字符串时特别快,其代价是代码稍长,在某些浏览器上处理尾部空白时存在不足。