|
|
javascript中没有用于移除字符串头尾空白的原生修剪方法,这是其最明显的疏漏之一。最常见的trim函数实现如下:
<script type="text/javascript"> function trim(str){ //删除左右两端的空格 return str.replace(/(^\s*)|(\s*$)/g, ""); } function ltrim(str){ //删除左边的空格 return str.replace(/(^\s*)/g,""); } function rtrim(str){ //删除右边的空格 return str.replace(/(\s*$)/g,""); } </script>
然而这个表达式有个基于正则表达式的性能问题。对性能的影响来自于正则表达式的两个方面:一方面是指明有两个匹配模式的管道预算,另一方面则指明全局应用该模式的g标记,考虑这些可将正则表达式一分为二,稍微提高其速度:
function trim(str){ return str.replace(/^\s+/, "").replace(/\s+$/, "");}
还有一种性能比其它变形版更好的处理方式,在所有浏览器中都比之前版本执行速度更快
function trim(str){ str = str.replace(/^\s+/, ""); for(var i = str.length - 1;i >=0; i--){ if(/\S/.test(str.charAt(i))){ str = str.substring(0, i+1); break; } } return str;}Levithan的博客文章对此有完整分析:http://bolg.stevenlevithan/archives/faster-trim-javascript
|
|