JavaScript中对字符串中空格的处理

来源:互联网 发布:特蕾莎修女 英文 知乎 编辑:程序博客网 时间:2024/04/30 14:33


在JavaScript语言中,字符串就是一种对象。

字符串的操作必须使用内置的构造器和设置方法来完成,JavaScript为字符串提供了很多方法,最常用的比如indexOf()、charAt()和substring()。然而,有一些其他开发语言中字符串的常用操作却没有提供,比如是去除字符串前后空格的trim()函数就没有提供。

在这里,为广大web开发者提供一个字符串trim()的源码,希望能为大家开发中提供方便:
function trim(s)
{
    if (s == null)
    {
        return s;
    }

    var i;
    var beginIndex = 0;
    var endIndex = s.length - 1;

    for (i=0; i<s.length; i++)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == ' ')
        {
            beginIndex++;
        }
        else
        {
            break;
        }
    }

    for (i = s.length - 1; i >= 0; i--)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == ' ')
        {
            endIndex--;
        }
        else
        {
            break;
        }
    }

    if (endIndex < beginIndex)
    {
        return "";
    }

    return s.substring(beginIndex, endIndex + 1);
}
上面这个trim()函数只是将字符串s的前后空格去掉了,而对字符串中间的空格没有受影响。

如果说在字符串中间有多个连续空格,而只想保留其中的一个,可以用下边的cutSpace()函数:

//去除多余的空格,如果有连续空格,只保留第一个
function cutSpace(s)
{
    var len = s.length;
    var i;
    var ch;
    var result = "";

    i = 0;
    while (i < len)
    {
        ch = s.charAt(i++);
        result += ch;
        if (ch != ' ')
        {
            continue;
        }

        while (i < len && (ch = s.charAt(i)) == ' ')
        {
           i++;
        }
    }

    return result;
}
可能有人会觉得为什么不把中间的空格都去掉了,一个都不留呢?呵呵,空格存在必然有其存在的道理。空格一般来说就是用来分隔的,多了就浪费空间了,而一个都不留的话,那么就没有分隔了,所有的字、词、句都连一块了。因此,去除空格也应该考虑“过犹不及”。

当然,如果用户真有去掉所有空格的需求,相信你根据上边的cutSpace()函数稍稍改写一下,就能实现你的需要。祝你顺利。

简短的Trim

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

String.prototype.ltrim 
= function() {
    
return this.replace(/^s+/,"");
}

String.prototype.rtrim 
= function() {
    
return this.replace(/s+$/,"");
}