JavaScript似乎没有本地的trim()
方法。使用JavaScript如何修剪字符串开头和结尾的空格?
JavaScript似乎没有本地的trim()
方法。使用JavaScript如何修剪字符串开头和结尾的空格?
根据这个页面,最好的综合方法是
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
当然,如果你使用jQuery,它将为你提供一个优化的去除空格方法。
我知道这个问题已经很古老了,但现在JavaScript实际上有一个本地的.trim()函数。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
很多人常常说,trim函数非常好用,但如果您不想使用整个框架来执行trim操作,那么查看它的实现可能很有用。因此在这里呈现其实现:
function( text ) { return (text || "").replace( /^(\s|\u00A0)+|(\s|\u00A0)+$/g, "" );}
与其他已经在此处提出的解决方案相比,我认为此实现的主要优点包括:
m
标志,g
标志在这里没有用处。 - Alin Purcaru正如其他人已经指出的那样,最好使用第三方JS库来完成这种操作。不是说trim()函数很难自己构建,而是有许多JavaScript本身没有的函数,你可能需要编写自己的函数,很快就会变得不划算,因此使用库更具成本效益。
当然,使用JS库的另一个优点是作者会辛勤劳作,确保函数在所有主要浏览器上都能正常工作,这样你就可以编写标准接口的代码,并忘记Internet Explorer和其他浏览器之间的烦人差异。
return str.replace( /^\s+|\s+$/g, '' );
对于 ltrim,将字符串开头的空格替换为空:
str2 = str.replace(/^\s+/,'');
str2 = str.replace(/\s+$/,'');
关于修剪:
str2 = str.replace(/^\s+|\s+$/g,'');
所有这些都使用正则表达式来完成实际工作。
// 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 );
};
String.prototype.trim = function() {
try {
return this.replace(/^\s+|\s+$/g, "");
} catch(e) {
return this;
}
}
var s = " hello ";
alert(s.trim() == "hello"); // displays true
我设计了一个高效的字符串修剪函数。这个函数在与其他24个竞争者(其中许多使用正则表达式)和Chrome和Chromium的本地string.trim()相比,有明显的优势,并且与Safari的trim()一样快速。测试结果在此处:http://jsperf.com/mega-trim-test/7
function trim27(str) {
var c;
for (var i = 0; i < str.length; i++) {
c = str.charCodeAt(i);
if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12)
continue; else break;
}
for (var j = str.length - 1; j >= i; j--) {
c = str.charCodeAt(j);
if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12)
continue; else break;
}
return str.substring(i, j + 1);
}
if (!String.prototype.trim || "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF".trim() || navigator.userAgent.toString().toLowerCase().indexOf("chrome") != -1)
var mytrim = function(str) {
var c;
for (var i = 0; i < str.length; i++) {
c = str.charCodeAt(i);
if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12 || c == 11 || c == 160 || c == 5760 || c == 6158 || c == 8192 || c == 8193 || c == 8194 || c == 8195 || c == 8196 || c == 8197 || c == 8198 || c == 8199 || c == 8200 || c == 8201 || c == 8202 || c == 8232 || c == 8233 || c == 8239 || c == 8287 || c == 12288 || c == 65279)
continue; else break;
}
for (var j = str.length - 1; j >= i; j--) {
c = str.charCodeAt(j);
if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12 || c == 11 || c == 160 || c == 5760 || c == 6158 || c == 8192 || c == 8193 || c == 8194 || c == 8195 || c == 8196 || c == 8197 || c == 8198 || c == 8199 || c == 8200 || c == 8201 || c == 8202 || c == 8232 || c == 8233 || c == 8239 || c == 8287 || c == 12288 || c == 65279)
continue; else break;
}
return str.substring(i, j + 1);
};
else var mytrim = function(str) {
return str.trim();
}
使用方法如下:
var foo = mytrim(" \n \t Trimmed \f \n "); // foo is now "Trimmed"
上面的mytrim()函数执行以下操作: