我如何从字符串的开始和结束删除所有空白?


当前回答

我为trim写了这个函数,当时.trim()函数在2008年的JS中还不可用。一些旧的浏览器仍然不支持.trim()函数,我希望这个函数可以帮助到一些人。

修剪函数

function trim(str)
{
    var startpatt = /^\s/;
    var endpatt = /\s$/;

    while(str.search(startpatt) == 0)
        str = str.substring(1, str.length);

    while(str.search(endpatt) == str.length-1)
        str = str.substring(0, str.length-1);   

    return str;
}

解释:函数trim()接受一个字符串对象,删除任何开头和结尾的空格(空格、制表符和换行符),并返回经过修剪的字符串。您可以使用此函数修改表单输入,以确保发送的数据是有效的。

函数的调用方法如下所示。

form.elements[i].value = trim(form.elements[i].value);

其他回答

这里有一个非常简单的方法:

function removeSpaces(string){
return string.split(' ').join('');
}

Flagrant Badassery有11个不同的修剪基准信息:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

毫无疑问,基于regexp的循环比传统循环慢。


这是我个人的。这段代码太旧了!我为JavaScript1.1和Netscape 3编写了它,从那以后它只进行了轻微的更新。(最初使用String.charAt)

/**
 *  Trim string. Actually trims all control characters.
 *  Ignores fancy Unicode spaces. Forces to string.
 */
function trim(str) {
    str = str.toString();
    var begin = 0;
    var end = str.length - 1;
    while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
    while (end > begin && str.charCodeAt(end) < 33) { --end; }
    return str.substr(begin, end - begin + 1);
}

不知道有什么虫子可以藏在这里,但我用这个:

var some_string_with_extra_spaces="   goes here    "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])

或者这个,如果文本包含回车:

console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])

另一个尝试:

console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])

如果你已经在使用jQuery框架,那么从jQuery修剪是很方便的。

$.trim('  your string   ');

我倾向于经常使用jQuery,所以用它修剪字符串对我来说是很自然的。但是否有可能出现反对jQuery的声音?:)

使用简单的代码

var str = "       Hello World!        ";
alert(str.trim());

浏览器支持

Feature         Chrome  Firefox Internet Explorer   Opera   Safari  Edge
Basic support   (Yes)   3.5     9                   10.5    5       ?

为旧浏览器添加原型

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}