JavaScript去除字符串空格的几种实现方式与正则表达式对比

作者:代码拾荒

时间:2026-10-28

浏览:150

本文详细解析了JavaScript中去除字符串左右空格的多种实现方案。通过对比递归截取、循环遍历以及正则表达式三种方法,分析了各自的代码逻辑与潜在问题。重点介绍了利用String.prototype扩展原生方法以及使用replace函数进行全局替换的高效实现,为前端开发中的字符串处理提供实用参考。

文章目录

基于递归的左右空格去除方法

// 思路来源:recon


//-------------

// 去除字符串左侧空格


function ltrim(str)


{

if (str.charAt(0) == " ")


{

// 若字符串左侧首字符为空格


str = str.slice(1); // 移除空格


// 此句亦可替换为 str = str.substring(1, str.length);


str = ltrim(str); // 递归执行


}

return str;


}

// 去除字符串右侧空格


function rtrim(str)


{

var ilength;



ilength = str.length;


if (str.charAt(ilength - 1) == " ")


{

// 若字符串右侧首字符为空格


str = str.slice(0, ilength - 1); // 移除空格


// 此句亦可替换为 str = str.substring(0, ilength - 1);


str = rtrim(str); // 递归执行


}

return str;


}

// 去除字符串两侧空格


function trim(str)


{

return ltrim(rtrim(str));


}

基于循环遍历的空格处理逻辑

// 思路来源:雨天5337


//----------------

function alltrim(a_strvarcontent)


{

var pos1, pos2, newstring;



pos1 = 0;


pos2 = 0;


newstring = ""



if ( a_strvarcontent.length > 0 )


  {

for( i=0; i<=a_strvarcontent.length; i++)


// recon: 此处存在错误,应修改为:


//for( i=0; i<a_strvarcontent.length; i++)


    {

if ( a_strvarcontent.charAt(i) == " " )


pos1 = pos1 + 1;


else


break;


    }

for( i=a_strvarcontent.length; i>=0 ; i--)


// recon: 此处存在错误,应修改为:


//for( i=a_strvarcontent.length-1; i>=0 ; i--)


    {

if ( a_strvarcontent.charAt(i) == " " )


pos2 = pos2 + 1;


else


break;


    }

newstring = a_strvarcontent.substring(pos1, a_strvarcontent.length-pos2)



}

return newstring;



}

基于标志位的字符串重组方案

// 思路来源:hooke


//-------------

function jtrim(sstr)


{

var astr="";


var dstr="";


var flag=0;


for (i=0;i<sstr.length;i++)


{if ((sstr.charAt(i)!=' ')||(flag!=0))


{dstr+=sstr.charAt(i);


flag=1;


    }
  }

flag=0;


for (i=dstr.length-1;i>=0;i--)


{if ((dstr.charAt(i)!=' ')||(flag!=0))


{astr+=dstr.charAt(i);


flag=1;


    }
  }

dstr="";


for (i=astr.length-1;i>=0;i--) dstr+=astr.charAt(i);


return dstr;


}

使用正则表达式的高效实现

为何不采用正则表达式?


String.prototype.Trim = function()


{

return this.replace(/(^\s*)|(\s*$)/g, "");


}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章