`
holoblog
  • 浏览: 1265019 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19562
文章分类
社区版块
存档分类
最新评论

jquery 替换空格

 
阅读更多

jquery 替换所有的空格;

如果是用PHP替换所有的空格,可以直接这样写
$srt= str_replace(” “,”",$str);//替换所有的空格.
但自己有JS这样
$str=str.replace(” “,”");
写替换空格的时候,打一个空格可以替换,如果打两个空格以上,就不可以了。

在百度上找一下,有十多种可以替换

JS去除空格的方法目前共有12种:

实现1

String.prototype.trim = function() {
return this.replace(/^/s/s*/, '').replace(//s/s*$/, '');
}

看起来不怎么样, 动用了两次正则替换,实际速度非常惊人,主要得益于浏览器的内部优化。一个著名的例子字符串拼接,直接相加比用Array做成的StringBuffer 还快。base2类库使用这种实现。
实现2

String.prototype.trim = function() {
return this.replace(/^/s+/, '').replace(//s+$/, '');
}

和实现1 很相似,但稍慢一点,主要原因是它最先是假设至少存在一个空白符。Prototype.js使用这种实现,不过其名字为strip,因为 Prototype的方法都是力求与Ruby同名。
实现3

String.prototype.trim = function() {
return this.substring(Math.max(this.search(//S/), 0),this.search(//S/s*$/) + 1);
}

以截取方式取得空白部分(当然允许中间存在空白符),总共 调用了四个原生方法。设计得非常巧妙,substring以两个数字作为参数。Math.max以两个数字作参数,search则返回一个数字。速度比上 面两个慢一点,但比下面大多数都快。
实现4

String.prototype.trim = function() {
return this.replace(/^/s+|/s+$/g, '');
}

这个可以称得上实现2的简化版,就是 利用候选操作符连接两个正则。但这样做就失去了浏览器优化的机会,比不上实现3。由于看来很优雅,许多类库都使用它,如JQuery与mootools

实现5

String.prototype.trim = function() {
var str = this;
str = str.match(//S+(?:/s+/S+)*/);
return str ? str[0] : '';
}

match 是返回一个数组,因此原字符串符合要求的部分就成为它的元素。为了防止字符串中间的空白符被排除,我们需要动用到非捕获性分组(?:exp)。由于数组可 能为空,我们在后面还要做进一步的判定。好像浏览器在处理分组上比较无力,一个字慢。所以不要迷信正则,虽然它基本上是万能的。

实现6

String.prototype.trim = function() {
return this.replace(/^/s*(/S*(/s+/S+)*)/s*$/, '$1');
}

把符合要求的部分提供出来,放到一个空字符串中。不过效率很差,尤其是在IE6中。
实现7

String.prototype.trim = function() {
return this.replace(/^/s*(/S*(?:/s+/S+)*)/s*$/, '$1');
}

和实现6很相似,但用了非捕获分组进行了优点,性能效之有一点点提升。

实现8

String.prototype.trim = function() {
return this.replace(/^/s*((?:[/S/s]*/S)?)/s*$/, '$1');
}

沿着上面两个的思路进行改进,动用了非捕获分组与字符集合,用?顶替了*,效果非常惊人。尤其在IE6中,可 以用疯狂来形容这次性能的提升,直接秒杀火狐。

实现9

String.prototype.trim = function() {
return this.replace(/^/s*([/S/s]*?)/s*$/, '$1');
}

这次是用懒惰匹配 顶替非捕获分组,在火狐中得到改善,IE没有上次那么疯狂。

实现10

String.prototype.trim = function() {
var str = this,
whitespace = ' /n/r/t/f/x0b/xa0/u2000/u2001/u2002/u2003/u2004/u2005/u2006/u2007/u2008/u2009/u200a/u200b/u2028/u2029/u3000';
for (var i = 0,len = str.length; i < len; i++) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(i);
break;
}
}
for (i = str.length - 1; i >= 0; i--) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(0, i + 1);
break;
}
}
return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

我 只想说,搞出这个的人已经不是用牛来形容,已是神一样的级别。它先是把可能的空白符全部列出来,在第一次遍历中砍掉前面的空白,第二次砍掉后面的空白。全 过程只用了indexOf与substring这个专门为处理字符串而生的原生方法,没有使用到正则。速度快得惊人,估计直逼上内部的二进制实现,并且在 IE与火狐(其他浏览器当然也毫无疑问)都有良好的表现。速度都是零毫秒级别的。
实现11

String.prototype.trim = function() {
var str = this,
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;
}

实现10已经告诉我们普通的原生字符串截取方法是远胜于正则替换,虽然是复杂一点。但只要正则 不过于复杂,我们就可以利用浏览器对正则的优化,改善程序执行效率,如实现8在IE的表现。我想通常不会有人在项目中应用实现10,因为那个 whitespace 实现太长太难记了(当然如果你在打造一个类库,它绝对是首先)。实现11可谓其改进版,前面部分的空白由正则替换负责砍掉,后面用原生方法处理,效果不逊 于原版,但速度都是非常逆天。
实现12

String.prototype.trim = function() {
var str = this,
str = str.replace(/^/s/s*/, ''),
ws = //s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
}

实现10与实现11在写法上更好的改进版,注意说的不是性能速 度,而是易记与使用上。和它的两个前辈都是零毫秒级别的,以后就用这个来工作与吓人。

分享到:
评论

相关推荐

    jquery replace方法去空格

    在介绍的代码示例中,我们看到使用了正则表达式`/(^\s*)|(\s*$)/g`来匹配字符串开头和结尾的空白字符(包括空格、制表符、换行符等)。其中: - `^`表示匹配输入字符串的开始位置。 - `\s`表示匹配任何空白字符。 - ...

    jquery Word格式整理去掉无用空格和首行缩进效果代码

    在给定的标题和描述中提到的"jquery Word格式整理去掉无用空格和首行缩进效果代码",指的是利用jQuery这一JavaScript库来处理Word文档中的格式问题,特别是消除多余的空格和首行缩进。这在批量处理大量文档时非常...

    jQuery替换textarea中换行的方法

    本文将深入探讨如何使用jQuery替换textarea中的换行符,这对于处理用户输入或者格式化数据显示至关重要。 首先,我们需要理解HTML中的textarea元素。textarea通常用于用户输入多行文本,浏览器会自动处理换行,即当...

    jQuery空格键添加a标签.zip

    在“jQuery空格键添加a标签”的场景中,我们主要关注的是如何利用jQuery监听键盘事件,特别是空格键(Spacebar)的按下,并在特定条件下动态创建并插入`&lt;a&gt;`标签。下面将详细解释这一过程涉及的知识点。 首先,我们...

    js/jquery去掉空格,回车,换行示例代码

    在JavaScript和jQuery中,有时我们需要清理用户输入的数据,去除其中的空格、回车和换行符,以确保数据的整洁性和一致性。以下是一些示例代码,展示如何使用正则表达式实现这一功能。 首先,让我们理解这些代码的...

    jQuery实现字符串全部替换的方法【推荐】

    在JavaScript和jQuery中,字符串替换是一项常见的操作,用于修改字符串中的特定内容。当我们需要全局替换字符串中的某个子串时,单纯使用JavaScript的`replace()`方法是不够的,因为它默认只会替换第一次出现的目标...

    jquery-2.1.1.js和jquery.min-2.1.1.js

    - `jquery.min-2.1.1.js`:经过UglifyJS或类似工具压缩,删除了注释和不必要的空格,合并了变量名,大幅减小了文件体积,提高了页面加载速度。但压缩后的代码不易阅读,不适用于调试。 4. **压缩优化技术** - ...

    jquery Word 格式整理去掉无用空格和首行缩进效果代码

    这个函数使用正则表达式`/\s+/g`匹配所有连续的空格,并用单个空格替换它们。`trim()`方法则用于去除文本两端的额外空格。 对于首行缩进,Word通常通过设置段落样式来实现。如果文本已转换为HTML,我们可以查找特定...

    jQuery1.9.1含jquery-1.9.1-vsdoc

    这个文件通过删除空格、换行和注释,以及对代码进行混淆,显著减小了文件大小,从而加快了页面加载速度。然而,由于其压缩特性,不适用于调试和学习,因为原始的函数名和变量名被替换为了难以理解的单字符。 在...

    jquery-1.11.1.js和jquery-1.11.1.min.js

    通过删除空格、换行和不必要的字符,以及对代码进行混淆,这个版本的文件大小大大减小,这对于生产环境中的网页性能优化至关重要。然而,由于代码被高度压缩,其可读性极低,不适合用于开发和调试。 jQuery 1.11.1...

    JQuery权威指南源代码

    替换元素节点 包裹元素节点 遍历元素 删除元素 数据管理 第4章 事件中的冒泡现象 bind方法绑定事件 映射方式绑定不同的事件 切换事件hover 切换事件toggle 移除事件unbind 其他事件one 其他事件trigger ...

    jquery-1.9.1.min.js

    此外,还有$.fn.append()、$.fn.prepend()等方法用于元素的插入、删除和替换。 2. 事件处理:jQuery简化了事件绑定的过程,$.fn.click()、$.fn.change()等方法可以直接绑定事件监听器,而$.fn.unbind()可以方便地...

    jQuery权威指南-源代码

    10.2.2 选择器中含有空格符号/318 10.3 优化事件中的冒泡现象/319 10.4 使用data()方法缓存数据/321 10.5 解决jQuery库与其他库的冲突/326 10.5.1 jQuery在其他库前导入/326 10.5.2 jQuery在其他库后导入/328 ...

    jQuery-3.0.0.js&jQuery;-3.0.0。min.js

    通过删除不必要的空格、换行和缩进,以及合并和最小化函数,这个文件的大小显著减小,从而提高了网页加载速度,减少了用户的等待时间。尽管其代码难以阅读,但在性能优化和减少网络传输量方面具有显著优势。 jQuery...

    处理textarea换行空格

    总的来说,处理`textarea`中的换行和空格涉及前端的字符串操作,包括正则表达式替换、事件监听等技术。开发者需要根据具体需求来选择合适的方法进行处理,确保用户输入的数据在后续处理和展示中能够正确无误。

    超实用的jQuery代码段

    9.30 用jQuery删除空白标签和具有非中断空格的标签 第10章 jQuery Mobile移动开发技巧 10.1 让页面自适应屏幕宽度 10.2 在移动设备页面中创建多个显示视图 10.3 创建对话框显示效果 10.4 从外部文件中加载页面内容 ...

    最新jquery1.7.2 +min+vsdoc

    它通过删除注释、空格和换行,以及进行变量名替换等手段,将原始代码压缩到最小,但功能保持不变。在生产环境中,为了提升用户体验,通常会使用.min.js版本。 三、jQuery 1.7.2-vsdoc.js:开发者文档 vsdoc文件是...

    jquery手机号码自动分隔

    我们使用正则`/(\d{3})(\d{4})(\d{4})/`匹配连续的3、4、4位数字,并用`$1 $2 $3`将它们替换,中间插入空格,从而达到格式化的效果。如果输入不符合手机号码规则,我们则清空输入框。 为了提高用户体验,可以考虑...

    jQuery标签输入自动完成插件jquery.tagsinput-revisited.js

    jQuery tagsinput插件本身是一款轻量级的jQuery插件,它允许用户在输入框中输入多个标签,每个标签之间用逗号或空格分隔。而jquery.tagsinput-revisited.js则是对这个基础插件的改进版本,增强了其功能性和可定制性...

Global site tag (gtag.js) - Google Analytics