在ie 7 8浏览器中,如果使用trim()属性去除空格的话,则会导致报错。
因此解决这个问题有如下方案:
var aa = $("#id").val().trim() --- 在IE中无法解析trim() 方法
解决办法:
[ var aa = $.trim($("#id").val()); ] 这个不好用,还是用下面介绍的吧,第一个已经过测试。
W3C那帮人的脑袋被驴踢了,直到java script1.8.1才支持trim函数(与trimLeft,trimRight),可惜现在只有 firefox3.5支持。由于去除字符串两边的空白实在太常用,各大类库都有它的影子。加之,外国人都很有研究精力,搞鼓了相当多实现。
实现1 OK 的。(在js中写上这个,然后直接在你要去空格的字符串后面跟上 .trim() 即可)
String.prototype.trim = function () {
return this .replace(/^ss*/, '' ).replace(/ss*$/, '' );
}
看起来不怎么样,动用了两次正则替换,实际速度很是惊人,主要得益于浏览器的内部优化。一个著名的例子字符串拼接,直接相加比用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 () {
returnthis .substring(Math.max( this .search(/S/), 0), this .search(/Ss*$/) 1);
}
以截取方式取得空白部分(当然允许中间存在空白符),总共调用了4个原生方法。预设得很是巧妙,substring以两个数码作为参数。Math.max以两个数码作参数,search则归回一个数码。速度比上边两个慢一点,但比下面大大都都快。
实现4
String.prototype.trim = function () {
returnthis .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*((?:[Ss]*S)?)s*$/, '$1' );
}
沿着上边两个的思路进行改进,动用了非捕获分组与字符集合,用?顶替了*,效果很是惊人。尤其在IE6中,可以用疯狂来形容这次性能的提升,直接秒杀火狐。
实现9
String.prototype.trim = function () {
return this .replace(/^s*([Ss]*?)s*$/, '$1' );
}
这次是用懒惰匹配顶替非捕获分组,在火狐中得到改善,IE没有上次那么疯狂。
实现10
String.prototype.trim = function () {
var str = this ,
whitespace = ' nrtfx0bxa0u2000u2001u2002u2003u2004u20 05u2006u2007u2008u2009u200au200bu2028u2029 u3000' ;
for ( var i = 0,len = str.length; 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(/^ss*/, '' ),
ws = /s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i 1);
}
实现10与实现11在写法上更好的改进版,注意说的不是性能速度,而是易记与施用上。和它的两个先辈都是零毫秒级另外,以后就用这个来工作与吓人。
下面是老外给出的比力结果,执行背景是对Magna Carta 这文章(超过27,600字符)进行trim操作。
实现 Firefox 2 IE 6
trim1 15ms trim2 31ms trim3 46ms 31ms
trim4 47ms 46ms
trim5 156ms 1656ms
trim6 172ms 2406ms
trim7 172ms 1640ms
trim8 281ms trim9 125ms 78ms
trim10 trim11 trim12 trim函数实现揭晓自己的想法,想懂得原作者说什么请看原文。
JS 去除空格的方法目前共有 12 种:
实现 1
String.prototype.trim = function() { return this.replace(/^ss*/, '' ).replace(/ss*$/, ''); }
实现2
String.prototype.trim = function() { return this.replace(/^s /, '').replace(/s $/, ''); }
实现3
String.prototype.trim = function() { return this.s string(Math.max(this.search(/S/), 0),this.search(/Ss*$/ ) 1); }
实现4
String.prototype.trim = function() { return this.replace(/^s |s $/g, ''); }
String.prototype.trim = function() { var str = this; str = str.match(/S (?:s S )*/);返回 str ?字符串[0]:''; }
String.prototype.trim = function() { return this.replace(/^s*(S*(s S )*)s*$/, '$1'); }
实现7
String.prototype.trim = function() { return this.replace(/^s*(S*(?:s S )*)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*((?:[Ss]*S)?)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*([Ss]*?)s*$/, '$1'); }
String.prototype.trim = function() { var str = this,whitespace = ' nrtfx0bxa0??????????????? '; for (var i = 0,len = str.length; i = 0; i--) { if (whitespace.indexOf(str.charAt(i)) === -1) { str = str.s string( 0, 我 1);休息;返回whitespace.indexOf(str.charAt(0)) === -1 ?字符串:''; }
实现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.s string(0, i 1 );休息;返回str; }
实现12
String.prototype.trim = function() { var str = this, str = str.replace(/^ss*/, ''), ws = /s/, i = str.长度; while (ws.test(str.charAt(--i)));返回 str.slice(0, i 1); }
看起来不太怎么样,动用了两次正则替换,实际上速度非常惊人,主要得益于浏览器的内部优化。一个著名的例子字符串拼接,直接相加比用数组做成的StringB?r还快。base2类库使用这种实现。
和实现1很相似,但稍慢一点,主要原因是它最先是假设至少存在一个空白符。Prototype.js使用实现,不过其名字为strip,因为这种原型的方法都是力求与Ry同名。
以截取方式取得空白部分(当然允许中间存在空白符),总共呼吁了四个离婚方法。设计得非常巧妙,s string以两个数字作为参数。Math.max以两个数字作参数,搜索则返回一个数字。速度比下面面两个慢一点,但比大多数都快。
这个可以说得上实现2的简化版,就是利用候选操作符连接两个正则。但这样做就失去了浏览器优化的机会,比不上实现3。由于看起来很优雅,很多类库都用它,如JQ ry与mootools
实现5
match是返回一个数组,因此原字符串符合要求的部分就成为它的元素。为了防止字符串中间的空白符被修复,我们需要动用非捕获性分组(?:exp)。由于备份可能崩溃空,我们在后面还需要进一步的对策。希望浏览器在处理分组上比较无力,一个字慢。所以不要迷信正则,虽然它基本上是万能的。
实现6
把符合要求的提供部分拿出来,放到一个空字符串中。不过效率很差,尤其是在IE6中。
和实现6很相似,但用了非夺取分组进行了优点,性能效率之有一点点提升。
实现8
沿着上面两个的思路进行改进,动用了非捕获分组与字符集合,用?顶替了*,效果非常惊人。尤其在IE6中,可以用疯狂来判断这次性能的提升,直接秒火狐。
实现9
这次是用懒惰匹配顶替非捕获分组,在火狐中得到改善,IE上次没有那么疯狂。
实现10
我说,搞出这个的人已经不是用牛来形容了,已经是神一样的级别了。它首先是把可能的空白符全部列出来,在第一次途中砍掉前面的空白,第一整个过程只用了indexOf与s string这个专门用于处理字符串而生的括号方法,没有使用到正则。速度快得惊人,估计直逼上内部的二进制实现,并且在IE与火狐(其他浏览器当然也没有疑问)良好都有的表现。速度都是零毫秒级别的。
实现10已经告诉我们普通的剔弦截取方法是远胜于正则替换,虽然是复杂一点。但只要是复杂的话,我们就可以利用浏览器对正则的优化,提高程序执行效率,如在IE的表现中实现8。我想通常不会有人在项目中应用实现10 ,因为那个空白实现太长太难记了(当然如果你在创建一个类库,它绝对是首先)。实现11可谓其改进版,前面部分的空白由正则替换负责砍掉,后面用原生方法处理,效果不逊 于原版,但速度都是非常逆天。
实现10与实现11在写法上更好的改进版,注意说的不是性能速 度,而是易记与使用上。和它的两个前辈都是零毫秒级别的,以后就用这个来工作与吓人。

在PHP编程中,处理字符串时经常会遇到空格的问题,这其中包括中文空格。在实际开发中,我们常常会使用trim函数来去除字符串两端的空格,但是对于中文空格的处理相对复杂一些。本文将介绍如何利用PHP中的trim函数来处理中文空格,并提供具体的代码示例。首先,让我们了解一下中文空格的种类。在中文中,空格不仅包括常见的英文空格(space),还存在其他一些特殊的空格

PHP中trim()函数的使用指南trim()函数在PHP中非常常用,用于去除字符串开头和结尾的空格或其他指定字符。本文将详细介绍trim()函数的使用方法,并提供具体的代码示例。一、函数语法trim()函数的语法如下:trim(string$str,string$character_mask=""):string该函数接受两个参数,

使用strings.Trim函数去除字符串首尾的指定字符集在Go语言中,strings.Trim函数是一个非常实用的函数,可以去除字符串首尾指定字符集,让字符串更加整洁和规范。本文将介绍如何使用strings.Trim函数,以及展示一些代码示例。首先我们来看一下strings.Trim函数的原型:funcTrim(sstring,cutsetstri

固态硬盘的trim功能主要是优化固态硬盘,解决SSD使用后的降速与寿命的问题,通过准备数据块进行重用来提高SSD效率的功能。Trim功能是几乎所有SSD固态硬盘都具有的功能,是一个ATA指令,当系统确认SSD支持Trim在删除数据时,不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。从而实现更加快速的数据处理。

PHP函数"trim"是一种非常有用的字符串处理函数。它可以帮助我们去除字符串两端的空白字符,包括空格、制表符、换行符等等。在编写PHP程序时,我们经常会遇到需要清理用户输入的情况,这时候使用"trim"可以确保我们得到干净的字符串,避免因为用户输入不规范而引发错误。下面是一个简单的代码示例,展示了如何使用"trim"函数:<?php

使用SSD驱动器会让您一直担心丢失数据并且无法恢复数据。但是,Windows允许您通过执行仅写入必要数据的TRIM命令来实现最佳性能,而无需管理旧数据块。为此,您需要确保您的SSD支持TRIM并在您的操作系统中启用它。如何检查是否启用了TRIM?在大多数情况下,默认情况下,在现代SSD中启用TRIM功能。但为了确保这一点签出,您可以使用管理权限运行命令。只需打开提升的命令提示符,运行fsutil行为查询DisableDeleteNotify命令,您的SSD就会列出。0表示已启用,1表示已禁用。如

PHP教程:学习使用trim函数去除中文空格,需要具体代码示例在PHP开发中,经常会遇到需要处理字符串的情况,而其中一个常见的需求就是去除字符串两端的空格。在处理英文字符串时,我们可以直接使用PHP内置的trim函数来实现这一操作,但是当字符串中包含中文字符时,trim函数可能并不能正常去除中文空格,这时就需要使用一些特殊处理方法来实现我们的需求。本文将介绍

1、说明trim()是Java开发人员最常用的删除前导和尾随空格的方法。对于trim()方法,空格字符是指*ASCII值小于或等于32('U+0020')*的任何字符。trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾都被删掉了。2、实例publicclassFunTester{publicstaticvoidmain(String[]args){Stringstring="onetwothree";System.out.prin


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver Mac版
视觉化网页开发工具