我如何从字符串的开始和结束删除所有空白?
当前回答
自IE9+以来的所有浏览器都有trim()方法用于字符串:
" \n test \n ".trim(); // returns "test" here
对于那些不支持trim()的浏览器,你可以使用MDN的这个填充:
if (!String.prototype.trim) {
(function() {
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
String.prototype.trim = function() {
return this.replace(rtrim, '');
};
})();
}
也就是说,如果使用jQuery, $.trim(str)也是可用的,并处理undefined/null。
看到这个:
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};
String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};
String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};
String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};
其他回答
有很多实现可以使用。最明显的是这样的:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
" foo bar ".trim(); // "foo bar"
不知道有什么虫子可以藏在这里,但我用这个:
var some_string_with_extra_spaces=" goes here "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])
或者这个,如果文本包含回车:
console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])
另一个尝试:
console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])
这里有一个非常简单的方法:
function removeSpaces(string){
return string.split(' ').join('');
}
虽然上面有一堆正确答案,但应该注意的是,JavaScript中的String对象在ECMAScript 5中有一个原生的.trim()方法。因此,在理想情况下,任何尝试创建trim方法原型的尝试都应该首先检查它是否已经存在。
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
};
}
本机添加于: JavaScript 1.8.1 / ECMAScript
因此支持:
Firefox: 3.5 +
Safari: 5 +
ie浏览器:IE9+(仅限标准模式下)http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx
铬: 5+
工作:10 + 5。
ECMAScript 5支持表:http://kangax.github.com/es5-compat-table/
JavaScript修剪的通用函数是什么?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
推荐文章
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?
- jQuery日期/时间选择器
- 我如何预填充一个jQuery Datepicker文本框与今天的日期?
- 数组的indexOf函数和findIndex函数的区别