裁剪字符串trim()自定义改进版

 更新时间:2013年04月10日 16:12:59   作者:  
下面讲述的是自定义trim()函数遇到的问题,改进的过程,建议在支持的浏览器中使用原生函数

ECMAScript5已经为字符串定义了原生的trim方法。这个方法可能比会比本文的任何版本的都要快。建议在支持的浏览器中使用原生函数。下面讲述的是自定义trim()函数遇到的问题,改进的过程。功夫在不断淬炼中才能醇正。

JavaScript中没有用于移除字符串头尾空白的原生修剪方法。最常见的自定义trim()函数实现如下所示:

复制代码 代码如下:

function trim(text) {

return text.replace(/^\s+|\s+$/g, ‘');

}

这种实现使用一个正则表达式匹配字符串开头和结尾的一或多个空白字符。replace()方法用空字符串替换所有匹配的部分。

然而这个实现方式有个基于正则表达式的性能问题,这种影响来自两个方面:一方面是指明有两个匹配模式的管道运算符,另一方面是指明全局应用该模式的g标记。

考虑到这些,可以将正则表达式一分为二并去掉g标记来重写该函数,稍稍提高它的速度。

复制代码 代码如下:

function trim(text) {

return text.replace(/^\s+/, ‘').replace(/\s+$/, ‘');

}

另一个改进的版本。保证正则表达式尽可能地简单。

复制代码 代码如下:

function trim(text) {

//删除字符串的头部空白

text = text.replace(/^\s+/, ‘');

// 循环清除尾部空白

for(var i=text.length; i--; ) {

if(/\S/.test(text.charAt(i))) { // \S 非空白字符

text = text.substring(0, i+1);

break;

}

}

return text;

}

使用建议:第2个trim()函数在小规模处理短字符串时性能还是好的。而第3个trim函数在处理长字符串时明显更快。

题外话:简单的裁剪字符串首尾空白字符函数,引发了对正则表达式的性能问题的考虑并实现规避性能问题的方法。技术追求完美,只能在实践中前行。

相关文章

  • javaScript获取对象中非空的属性实现方法详解

    javaScript获取对象中非空的属性实现方法详解

    这篇文章主要为大家介绍了javaScript获取对象中非空的属性实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • javascript的日期对象、数组对象、二维数组使用说明

    javascript的日期对象、数组对象、二维数组使用说明

    这篇文章主要介绍了javascript的日期对象、数组对象、二维数组使用说明,需要的朋友可以参考下
    2014-12-12
  • JavaScript入门教程(5) js Screen屏幕对象

    JavaScript入门教程(5) js Screen屏幕对象

    这是基本JavaScript的屏幕对象
    2009-01-01
  • JSON的语法与规则详解

    JSON的语法与规则详解

    这篇文章主要介绍了JSON的语法与规则详解,Web API可以接收JSON格式的数据,也可以返回JSON格式的数据。在接收JSON 数据时,需要使用相应的库或框架来解析JSON数据,在返回JSON数据时,可以使用相应的库或框架将数据转换为JSON格式
    2023-07-07
  • 浅析用prototype定义自己的方法

    浅析用prototype定义自己的方法

    下面小编将通过实例由浅入深讲解 prototype 的具体使用方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • JavaScript中pop()方法的使用教程

    JavaScript中pop()方法的使用教程

    这篇文章主要介绍了JavaScript中pop()方法的使用教程,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • JSONP跨域原理以及实现方法详解

    JSONP跨域原理以及实现方法详解

    由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案,下面这篇文章主要给大家介绍了关于JSONP跨域原理以及实现的相关资料,需要的朋友可以参考下
    2022-06-06
  • js中直接声明一个对象的方法

    js中直接声明一个对象的方法

    这篇文章主要介绍了js中直接声明一个对象的方法,需要的朋友可以参考下
    2014-08-08
  • JavaScript在IE和FF下的兼容性问题

    JavaScript在IE和FF下的兼容性问题

    长久以来JavaScript兼容性一直是Web开发者的一个主要问题。在正式规范、事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬。为此,主要从以下几方面差异总结IE和Firefox的Javascript兼容性:
    2014-05-05
  • 详解JavaScript语言的基本语法要求

    详解JavaScript语言的基本语法要求

    这篇文章主要介绍了JavaScript语言的基本语法要求要学习好JavaScript,首先我们要懂JavaScript语言的一些基本语法要求,感兴趣的小伙伴们可以参考一下
    2015-11-11

最新评论