js去除空格的12种实用方法图片,js去除空格的12种实用方法是什么

js去除空格的12种实用方法图片,js去除空格的12种实用方法是什么,js去除空格的12种实用方法

js中删除空格的方法有很多。本文整理了12个实用方法,与大家分享。

实现1

string . prototype . trim=function(){

返回this.replace(/^\s\s*/,”)。替换(/\s\s*$/,' ');

}

看起来不太好。它采用两次常规替换,实际速度惊人,主要得益于浏览器内部优化。字符串拼接的一个著名例子,直接加法比数组做的StringBuffer快。Base2类库使用这种实现。

实现2

string . prototype . trim=function(){

返回this.replace(/^\s /,“”)。替换(/\s $/,' ');

}

它类似于1的实现,但是稍微慢一点,主要是因为它首先假设至少有一个空格存在。Prototype.js使用了这个实现,但是它的名字是strip,因为Prototype的方法都力求和Ruby同名。

实现3

string . prototype . trim=function(){

返回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)*/);

返回字符串?str[0]:“”;

}

Match返回一个数组,所以原始字符串中符合要求的部分成为它的元素。为了防止字符串中间的空格被排除,我们需要使用非捕获分组(?exp .由于数组可以是空的,我们必须在以后做进一步的决定。好像浏览器处理包比较弱,一个字慢。所以不要迷信规律性,虽然它基本上是万能的。

实现6

string . prototype . trim=function(){

return this.replace(/^\s*(\s*(\s \ s)*)\ s * $/,' $ 1 ');

}

提供符合要求的部分,放在空字符串中。但是效率很差,尤其是IE6。

实现7

string . prototype . trim=function(){

返回this.replace(/^\s*(\S*(?\s \S )*)\s*$/,' $ 1 ');

}

它非常类似于实现6,但是它利用了非捕获分组,并且它的性能有所提高。

实现8

string . prototype . trim=function(){

返回this.replace(/^\s*((?[\S\s]*\S)?)\s*$/,' $ 1 ');

}

沿着以上两个思路改进,使用非捕获分组和字符集,使用?替换*,效果惊人。尤其是在IE6中,这种性能提升可以用疯狂来形容,直接秒杀火狐。

实现9

string . prototype . trim=function(){

返回this.replace(/^\s*([\S\s]*?)\s*$/,' $ 1 ');

}

这一次使用了惰性匹配来替换非捕获包,这在Firefox中得到了改进。IE没有上次那么疯狂。

实现10

string . prototype . trim=function(){

var str=this,

white space=' \ n \ r \ t \ f \ x0b \ xa0 \ u 2000 \ u 2001 \ u 2002 \ u 2003 \ u 2004 \ u 2005 \ u 2006 \ u 2007 \ u 2008 \ u 2009 \ u 200a \ u 200b \ u 2028 \ u 2029 \ u 3000 ';

for (var i=0,len=str.length我leni ) {

if(white space . index of(str . charat(I))===-1){

str=str . substring(I);

打破;

}

}

for(I=str . length-1;I=0;我- ) {

if(white space . index of(str . charat(I))===-1){

str=str.substring(0,I 1);

打破;

}

}

return white space . index of(str . charat(0))===-1?字符串:“”;

}

我只想说,想出这个的人已经不是牛了,而是神一般的水平。首先,它列出了所有可能的空白字符,在第一次遍历中切断前面的空白,在第二次遍历中切断后面的空白。整个过程中只使用了indexOf和substring这两个专门为处理字符串而设计的原生方法,没有使用正则化。速度快得惊人,估计和内部二进制实现速度差不多,在IE和Firefox中也有不错的表现(其他浏览器当然不用怀疑)。速度大约是零毫秒。

实现11

string . prototype . trim=function(){

var str=this,

str=str.replace(/^\s /,' ');

for(var I=str . length-1;I=0;我- ) {

if (/\S/)。test(str.charAt(i))) {

str=str.substring(0,I 1);

打破;

}

}

返回字符串;

}

实现10已经告诉我们,常见的原生字符串截取方法远优于常规替换,虽然有点复杂。但只要规律性不太复杂,我们可以利用浏览器优化规律性,提高程序执行效率,比如在IE中实现8的性能。我觉得一般不会有人在项目中应用implementation 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));

返回str.slice(0,I 1);

}

实现10和实现11在文字上是更好的改进版本。请注意,它们不是关于性能速度,而是易于记忆和使用。而它的两个前辈都是零毫秒级别的,以后就用这个来干活吓唬人。

JS(去掉前后空格或去掉所有空格)的用法

1.删除字符串前后的所有空格:

代码如下:

函数修剪(字符串){

返回str.replace(/(^\s*)|(\s*$)/g,“);

}

描述:

如果您使用jQuery,您可以只使用$。trim(str)方法。STR表示去掉前后所有空格的字符串。

2.去掉字符串中的所有空格(包括中间的空格,第二个参数需要设置为:g)

代码如下:

函数Trim(str,is_global){

var结果;

result=str.replace(/(^\s)|(\ s $)/g,' ');

if(is_global.toLowerCase()=='g ')

{

result=result.replace(/\s/g,' ');

}

返回结果;

}

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: