JavaScript去除字符串空格的多种实现方案
本文详细解析了JavaScript中去除字符串空格的多种实现方式。重点介绍了利用正则表达式结合prototype属性扩展String对象的方法,涵盖Trim、LTrim和RTrim。同时对比了基于循环字符判断、递归调用slice/substring以及RegExp构造函数等不同技术路线的代码实现与适用场景。
基于正则与原型扩展的Trim方法
方法一:个人推荐的最佳实践。其核心原理在于运用正则表达式进行匹配替换。此外,该方案利用了JavaScript的prototype属性来扩展功能。即便不使用prototype属性,直接通过函数也能实现相同效果,但借助prototype封装后,调用方式更为直观便捷。prototype属性用于返回对象类型原型的引用,语法为objectName.prototype,其中objectName指代对象名称。通过该属性,可以为对象原型提供一组基础功能,新创建的实例将继承这些赋予原型的操作。例如,若要为Array对象添加获取最大值的方法,需先声明该函数,将其加入Array.prototype,随后即可使用。
代码如下:
function array_max( ){
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( ); 执行上述代码后,变量y将保存数组x中的最大值,即6。
所有JScript内置对象均拥有只读的prototype属性。如示例所示,可以为原型添加自定义功能,但内置对象本身不能被赋予新的原型。不过,用户自定义的对象可以被重新赋值给新的原型。
在本语言参考文档中,每个内置对象的方法和属性列表均明确标注了哪些属于对象原型部分,哪些不属于。
以下是完整代码示例:
代码如下:
<SCRIPT LANGUAGE="JavaScript">
<!--
//出处:网上搜集
//made by yaosansi 2005-12-02
//For more visit http://www.yaosansi.com
// Trim() , Ltrim() , RTrim()
String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.LTrim = function()
{
return this.replace(/(^\s*)/g, "");
}
String.prototype.RTrim = function()
{
return this.replace(/(\s*$)/g, "");
}
//-->
</SCRIPT>接下来解析JavaScript脚本中正则表达式"\s"的含义。
\s用于匹配任何空白字符,包括空格、制表符、换页符等。其等价于[ \f\n\r\t\v]。
请注意,此处必须使用小写的s。
方法二:
由于使用方法简单,此处不再赘述具体示例。
基于循环与递归的Trim实现
代码如下:
//javascript去空格函数
function LTrim(str){ //去掉字符串 的头空格
var i;
for(i=0;i if(str.charAt(i)!=" "&&str.charAt(i)!=" ") break;
}
str = str.substring(i,str.length);
return str;
}
function RTrim(str){
var i;
for(i=str.length-1;i>=0;i--){
if(str.charAt(i)!=" "&&str.charAt(i)!=" ") break;
}
str = str.substring(0,i+1);
return str;
}
function Trim(str){
return LTrim(RTrim(str));
} 方法三:
该方法将多个函数整合在一起,通过传递不同的参数或调用顺序来实现不同的处理效果。
<HEAD> <TITLE>JavaScript Trim Function</TITLE> </HEAD> <BODY> JavaScript中的字符串去除空格函数(自定义): </BODY> </HTML>[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
4、这种方法也不错
其他Trim实现方案
代码如下:
//lTrim()去掉字符串左边的空格
function lTrim(str)
{
if (str.charAt(0) == " ")
{
//如果字串左边第一个字符为空格
str = str.slice(1);//将空格从字串中去掉
//这一句也可改成 str = str.substring(1, str.length);
str = lTrim(str); //递归调用
}
return str;
}
//rTrim()去掉字串右边的空格
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;
}
//trim()去掉字串两边的空格
function trim(str)
{
return lTrim(rTrim(str));
}
5、
代码如下:
function Trim(sText)
{
return sText.replace(new RegExp("(^[\\s]*)|([\\s]*$)", "g"), "");
}什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
