raw*_*rrr 175 javascript trim strip
什么是一个干净,高效的JavaScript实现来从字符串中去除前导和尾随空格?
例如:
" dog"
"dog "
" dog "
" dog "
一切都变成了
"dog"
Dav*_*res 199
用这个:
if(typeof(String.prototype.trim) === "undefined")
{
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
Run Code Online (Sandbox Code Playgroud)
trim函数现在可用作字符串的第一类函数.例如:
" dog".trim() === "dog" //true
Run Code Online (Sandbox Code Playgroud)
编辑:采取JP的建议,将正则表达式模式合二为一.根据Christoph的建议,还添加了全局修饰符.
马修·克拉姆利(Matthew Crumley)想要在重新创造之前嗅探修剪功能.这是在客户端上使用的JavaScript版本更新的情况下完成的,因此具有自己的本机修剪功能.
jpa*_*kal 97
Gumbo在评论中已经注意到了这一点,但这需要重复作为答案:该trim()方法是在JavaScript 1.8.1中添加的,并得到所有现代浏览器(Firefox 3.5 +,IE 9,Chrome 10,Safari 5.x)的支持, IE 8及更早版本不支持它.用法很简单:
" foo\n\t ".trim() => "foo"
Run Code Online (Sandbox Code Playgroud)
也可以看看:
Mic*_*Mic 12
这是我使用的功能.
function trim(s){
return ( s || '' ).replace( /^\s+|\s+$/g, '' );
}
Run Code Online (Sandbox Code Playgroud)
Bar*_*row 12
来自MDN的更好的polyfill 支持删除BOM和NBSP:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Run Code Online (Sandbox Code Playgroud)
请记住,修改内置原型会带来性能损失(由于JS引擎因许多运行时优化而失败),而在性能危急情况下,您可能需要考虑替代定义myTrimFunction(string).话虽这么说,如果您的目标是没有原生.trim()支持的旧环境,您可能会遇到更重要的性能问题.
如果不是编写新代码来修剪字符串,而是查看调用"strip()"的现有代码并想知道它为什么不起作用,您可能想要检查它是否尝试包含类似prototypejs框架的内容,并确保它实际上已加载.
该框架为所有String对象添加了一个strip函数,但是如果你升级它并且你的网页仍然引用旧的.js文件,它当然不会工作.