如何从字符串中去除前导和尾随空格?
例如," dog "
应变为"dog"
。
如何从字符串中去除前导和尾随空格?
例如," dog "
应变为"dog"
。
使用这个:
if(typeof(String.prototype.trim) === "undefined")
{
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
现在,trim函数将作为字符串的一流函数而可用。例如:
" dog".trim() === "dog" //true
编辑:采纳了J-P的建议将正则表达式模式合并为一个。也根据Christoph的建议添加了全局修饰符。
采用Matthew Crumley的建议,在重新创建trim函数之前,先对其进行嗅探。这是为了防止客户端使用的JavaScript版本更高,因此已经有自己的本地trim函数。
trim()
必须将this
转换为字符串类型,即您需要将this.replace(...)
更改为String(this).replace(...)
或('' + this).replace(...)
;这允许将函数应用于非字符串值并使用call()
或apply()
。 - Christophtrim()
,例如String.prototype.trim.apply(42)
或MyObj.prototype.trim = String.prototype.trim; new MyObj().trim();
。 - Christoph/\s/
不能去除 ES3 规范中定义的所有空格字符。我最近写了一篇关于浏览器如何处理 /\s/
的文章 - http://thinkweb2.com/projects/prototype/whitespace-deviations/ - 以及如何避免这个问题。 - kangaxreplace(/^\s+/, '').replace(/\s+$/, '');
)在许多浏览器中实际上略微更快,因此您不应该出于性能问题选择单个正则表达式版本。选择你认为更易读的那一个。 - bobince对于jQuery用户,$.trim(s)
怎么样?
Gumbo已经在评论中提到了这一点,但是这个答案需要重申:JavaScript 1.8.1中添加了trim()
方法,并且被所有现代浏览器支持(Firefox 3.5+,IE 9,Chrome 10,Safari 5.x),尽管IE 8及更早版本不支持它。使用方法很简单:
" foo\n\t ".trim() => "foo"
相关链接:
这是我使用的函数。
function trim(s){
return ( s || '' ).replace( /^\s+|\s+$/g, '' );
}