问题说明了一切; JS似乎没有原生的trim()方法.
jQuery的最短形式:
string = $.trim(string);
链接
根据这个页面,最好的全能方法是
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
当然,如果您使用的是jQuery,它将为您提供优化的trim方法.
我知道这个问题很古老但是现在,Javascript确实有一个原生的.trim()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
好吧,正如很多人总是说的那样,trim函数运行得很好,但是如果你不想仅使用整个框架来执行修剪,那么查看它的实现可能会很有用.所以这里是:
function( text ) { return (text || "").replace( /^(\s|\u00A0)+|(\s|\u00A0)+$/g, "" );}
与此处提出的其他解决方案相比,我在此实现中看到的主要优点是:
'g'标志,允许您在多行字符串上执行修剪
(text ||"")语法确保函数始终有效,即使传递的参数为null或未定义.
正如其他几个人已经指出的那样,通常最好通过使用第三方JS库来做这种事情.并不是修饰()是一个复杂的功能来自己构建,但有许多功能不是您可能需要的JavaScript本机并最终自己编写,使用库很快就会变得更具成本效益.
当然,使用JS库的另一个好处是作者努力确保这些功能可以在所有主流浏览器中运行,这样您就可以编写标准接口并忘记Internet Explorer与所有浏览器之间的烦恼差异其他浏览器.
@ Pat的一个稍微小一点的版本.
return str.replace( /^\s+|\s+$/g, '' );
对于ltrim,将没有任何东西替换为锚定在字符串开头的空格:
str2 = str.replace(/^\s+/,'');
对于rtrim,将没有任何东西替换为锚定在字符串末尾的空格:
str2 = str.replace(/\s+$/,'');
修剪:
str2 = str.replace(/^\s+|\s+$/g,'');
这些都使用正则表达式来完成实际工作.
为什么不修改String原型?为什么不从开源库窃取修剪函数,就像我在这里使用YUI一样?(你真的需要为这个简单的设备加载和整个框架吗?)把它们放在一起你得到这个:
String.prototype.trim = function() { try { return this.replace(/^\s+|\s+$/g, ""); } catch(e) { return this; } } var s = " hello "; alert(s.trim() == "hello"); // displays true
使用Ariel Flesler的快速修剪功能:
// Licensed under BSD function myBestTrim( str ){ var start = -1, end = str.length; while( str.charCodeAt(--end) < 33 ); while( str.charCodeAt(++start) < 33 ); return str.slice( start, end + 1 ); };
不过,我的解决方案就是这样(因为Firefox 3.5及更高版本中的String对象已经有了一个trim
方法):
String.prototype.trim = String.prototype.trim || function () { var start = -1, end = this.length; while( this.charCodeAt(--end) < 33 ); while( this.charCodeAt(++start) < 33 ); return this.slice( start, end + 1 ); };