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


当前回答

我知道这个问题三年前就有人问过了。现在,String.trim()是在JavaScript中原生添加的。举个例子,你可以像下面这样直接修剪,

document.getElementById("id").value.trim();

其他回答

虽然上面有一堆正确答案,但应该注意的是,JavaScript中的String对象在ECMAScript 5中有一个原生的.trim()方法。因此,在理想情况下,任何尝试创建trim方法原型的尝试都应该首先检查它是否已经存在。

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

本机添加于: JavaScript 1.8.1 / ECMAScript

因此支持:

Firefox: 3.5 +

Safari: 5 +

ie浏览器:IE9+(仅限标准模式下)http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

铬: 5+

工作:10 + 5。

ECMAScript 5支持表:http://kangax.github.com/es5-compat-table/

适用于IE9+及其他浏览器

function trim(text) {
    return (text == null) ? '' : ''.trim.call(text);
}

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])

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

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