题
这个问题已经有一个答案在这里:
- 修剪串在JavaScript? 25的答案
是什么一种清洁和高效的JavaScript执行条开头和结尾的空间,从一串?
例如:
" dog"
"dog "
" dog "
" dog "
都变成了
"dog"
解决方案
使用这样的:
if(typeof(String.prototype.trim) === "undefined")
{
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
修剪功能,现在将提供的作为第一流的功能上你的琴弦。例如:
" dog".trim() === "dog" //true
编辑:把J-P的建议结合regex模式为一体。还增加了全球修改每克里斯托弗的建议。
把马修Crumley的想法探查的上微调功能之前的重建。这样做是在情况下的版本JavaScript用客户是更新近的因此具有其自己本地修剪的功能。
其他提示
技术用户,怎么样 $.trim(s)
秋葵浓汤已经注意到这一意见,但这值得重复作为一个答案:的 trim()
方法是加入JavaScript1.8.1和支持通过所有现代浏览器(Firefox3.5+,即9、铬10,Safari5.x),但即8和年长不支持它。用法很简单:
" foo\n\t ".trim() => "foo"
参见:
这里的功能使用。
function trim(s){
return ( s || '' ).replace( /^\s+|\s+$/g, '' );
}
一个更好的提供填充代码从 MDN 支持删除 BOM 和 NBSP:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
铭记,修改的内置原型带有性能的影响(由于JS引擎援助在一定数量的运行时优化),并在性能至关重要的情况下,你可能需要考虑的替代定义 myTrimFunction(string)
代替。这就是说,如果针对一个旧的环境没有司机 .trim()
支持,你很可能有更重要性的问题来处理。
史蒂芬*Levithan 一旦写的关于如何实现 快JavaScript饰.这绝对值得一看。
如果你已经在使用jQuery,然后你可能想看一看 jQuery.trim()
这已经是提供有文化的地方.
如果,而不是编写新的码要修剪一串,你看着现代码电话"条()",并想知道为什么它不工作,你可能想看看是否它试图包括一些东西喜欢的prototypejs框架,并确保它实际上得到加载。
这一框架增加了一个条功能的所有串的对象,但是,如果例如你升级它和您的网页仍然参照旧。js文件,它会当然不起作用。