裁剪字符串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函数在处理长字符串时明显更快。

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

(0)

相关推荐

  • jQuery去掉字符串起始和结尾的空格(多种方法实现)

    去掉字符串起始和结尾的空格. jQuery 代码: 复制代码 代码如下: $.trim(" hello, how are you? "); jquery 循环读取checkbox值 复制代码 代码如下: 复制代码 代码如下: $("input[type=checkbox][checked]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出 alert($(this).val()); }); $("#A").v

  • jQuery Trim去除字符串首尾空字符的实现方法说明

    假如您的项目正在使用jQuery框架,要去除字符串首尾的空字符您当然会选择:jQuery.trim(string).如果没有用到jQuery如何简单的实现呢.之前本人曾发过一个代码小片段:Javascript去除字符串左右的空格-trim(),这个写的比较粗糙并要用到递规操作.所以很多人很不满意代码的质量,包括我在内.偶尔看了下jQuery的代码,发现非常值的我们学习. 看看它是怎么实现这个功能的吧,代码只有一句话:使用正则方法. JavaScript Trim实现代码function trim

  • JavaScript trim 去除字符串空格的三种方法(附代码详解)

    方法一: 正则替换 推荐个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 下面是代码原文 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- //出处:网上搜集 //For more visit http://www.jb51.net // Trim() , Ltrim() , RTrim() String.prototype.Trim = function() { return this.replace(/(^\s

  • js中eval()函数和trim()去掉字符串左右空格应用

    对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格. trim()是参照了jquery的源码,你可以放心使用. 对于js中eval()函数的理解是本人心得不一定正确. 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <he

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

    ECMAScript5已经为字符串定义了原生的trim方法.这个方法可能比会比本文的任何版本的都要快.建议在支持的浏览器中使用原生函数.下面讲述的是自定义trim()函数遇到的问题,改进的过程.功夫在不断淬炼中才能醇正. JavaScript中没有用于移除字符串头尾空白的原生修剪方法.最常见的自定义trim()函数实现如下所示: 复制代码 代码如下: function trim(text) { return text.replace(/^\s+|\s+$/g, ''); } 这种实现使用一个正则

  • C语言实现将double/float 转为字符串(带自定义精度)

    目录 将double/float转为字符串(带自定义精度) 需用到头文件有 简单用法 float和double精度问题 double和float的区别 float和double的精度 将double/float转为字符串(带自定义精度) char *double_to_string(double d, int decimal) { decimal = decimal < 0 ? 0 : decimal; char *p; char dd[20]; switch (decimal) { case

  • JS中字符串trim()使用示例

    示例一: <head> <title>测试JS扩展方法</title> <script type="text/javascript"> // 合并多个空白为一个空白 String.prototype.ResetBlank = function() { //对字符串扩展 var regEx = /\s+/g; return this.replace(regEx, ' '); }; window.onload = function() { v

  • Java中ArrayList去除重复元素(包括字符串和自定义对象)

    1.去除重复字符串 package com.online.msym; import java.util.ArrayList; import java.util.Iterator; @SuppressWarnings({ "rawtypes", "unchecked" }) public class Demo1_ArrayList { public static void main(String[] args) { ArrayList list = new Array

  • js加密解密字符串可自定义密码因子

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • js裁剪(分隔)字符串的三种常用方法

    目录 一.Slice 1.两个参数: 2.参数为负: 3.一个参数: 4.注意: 二.Substring 1.两个参数: 2.一个参数: 3.注意: 三.Sbustr 1.两个参数: 2.一个参数: 3.注意: 前言:在开发中我们经常会遇到对于字符串的部分取舍问题,今天我们来看看3中常用的方法来解决这个问题. 一.Slice 1.两个参数: 两个参数:起始索引(开始位置),终止索引(结束位置),提取字符串的某个部分并在新字符串中返回被提取的部分. 包前不包后 var str="HelloTwd&

  • js 去掉字符串前后空格实现代码集合

    第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var whitespace = new String(" \t\n\r"); var str = new String(s); if (whitespace.indexOf(str.charAt(0))

  • js去字符串前后空格的实现方法

    当我们进行一些页面编辑时,字符串前后的空格,通常是无效的.因此需要在获取信息时,进行过滤. 比如: 输入:[空格][空格]a[空格]b[空格][空格][空格] 得到:a[空格]b 代码如下: 去掉前面的空格 function LTrim(str){ var i; for(i=0;i<str.length;i++){ if(str.charAt(i)!=" ") break; } str = str.substring(i,str.length); return str; } 去掉

  • js去字符串前后空格5种实现方法及比较

    我们在项目中如果写到注册的时候,用户输入空格,我们怎么来剔除空格呢? 下面是我经常用到的js与大家分享下: 第一种:循环检查替换 [javascript] 复制代码 代码如下: //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var whitespace = new String("

  • Javascript中各种trim的实现详细解析

    这是lgzx公司的一道面试题,要求给js的String添加一个方法,去除字符串两旁的空白字符(包括空格.制表符.换页符等). 复制代码 代码如下: String.prototype.trim = function() {     //return this.replace(/[(^\s+)(\s+$)]/g,"");//會把字符串中間的空白符也去掉     //return this.replace(/^\s+|\s+$/g,""); //     return t

随机推荐