修剪string的开头和结尾的空格

我试图find一种方法来修剪标题string的开头和结尾的空格。 我正在使用这个,但它似乎并没有工作:

title = title.replace(/(^[\s]+|[\s]+$)/g, ''); 

有任何想法吗?

注意:截至2015年, 所有主stream浏览器(包括IE> = 9)都支持String.prototype.trim() 。 这意味着对于大多数用例来说,简单地执行str.trim()是实现问题所要求的最好方法。


Steven Levithan从性能angular度分析了Javascript中trim不同实现。

他的build议是:

 function trim1 (str) { return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); } 

针对“快速跨浏览器”的通用实现

 function trim11 (str) { str = str.replace(/^\s+/, ''); for (var i = str.length - 1; i >= 0; i--) { if (/\S/.test(str.charAt(i))) { str = str.substring(0, i + 1); break; } } return str; } 

“如果你想在所有浏览器中处理超长的string”。

参考

  • blog.stevenlevithan.com – 更快的JavaScript修剪

如果使用jQuery是一个选项:

 /** * Trim the site input[type=text] fields globally by removing any whitespace from the * beginning and end of a string on input .blur() */ $('input[type=text]').blur(function(){ $(this).val($.trim($(this).val())); }); 

或者干脆:

 $.trim(string); 

正如@ChaosPandion所提到的那样, String.prototype.trim方法已经被引入到ECMAScript第5版规范中, 有些实现已经包含了这个方法,所以最好的办法是检测本地的实现,并且只有当它不可用时才声明它:

 if (typeof String.prototype.trim != 'function') { // detect native implementation String.prototype.trim = function () { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }; } 

那么你可以简单地:

 title = title.trim(); 

我知道这是一个旧的post,但只是想我会分享我们的解决scheme。 在寻求最短的代码(不是每个人都喜欢简洁的正则expression式),可以使用:

 title = title.replace(/(^\s+|\s+$)/g, ''); 

顺便说一句:我跑了同样的testing通过上面的链接共享上面的blog.stevenlevithan.com – 更快的JavaScript修剪和这种模式击败所有其他的手!

使用IE8,添加testing为test13。 结果是:

原始长度:226002
trim1:110ms(长度:225994)
trim2:79ms(长度:225994)
trim3:172ms(长度:225994)
trim4:203ms(长度:225994)
trim5:172ms(长度:225994)
trim6:312ms(长度:225994)
trim7:203ms(长度:225994)
trim8:47ms(长度:225994)
trim9:453ms(长度:225994)
trim10:15ms(长度:225994)
trim11:16ms(长度:225994)
trim12:31ms(长度:225994)
trim13:0ms(长度:226002)

ECMAScript 5支持trim ,这已经在Firefox中实现。

修剪 – MDC

在这里,这应该做你需要的一切

 function doSomething(input) { return input .replace(/^\s\s*/, '') // Remove Preceding white space .replace(/\s\s*$/, '') // Remove Trailing white space .replace(/([\s]+)/g, '-'); // Replace remaining white space with dashes } alert(doSomething(" something with some whitespace ")); 

以下是我在过去用js修剪string的一些方法:

 String.prototype.ltrim = function( chars ) { chars = chars || "\\s*"; return this.replace( new RegExp("^[" + chars + "]+", "g"), "" ); } String.prototype.rtrim = function( chars ) { chars = chars || "\\s*"; return this.replace( new RegExp("[" + chars + "]+$", "g"), "" ); } String.prototype.trim = function( chars ) { return this.rtrim(chars).ltrim(chars); } 

这是我目前的代码,第二行如果我评论第三行,但不工作,如果我离开它是如何的。

 var page_title = $(this).val().replace(/[^a-zA-Z0-9\s]/g, ''); page_title = page_title.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); page_title = page_title.replace(/([\s]+)/g, '-'); 

只要使用string.trim()方法即可。 它受到所有主stream浏览器的支持。 这里引用: http : //www.w3schools.com/jsref/jsref_trim_string.asp

jQuery.trim(“你好,你好吗?”);

🙂

当DOM完全加载时,可以将其添加到所有文本字段。 我从来没有遇到过需要提交主要空间或尾随空间的情况,所以我一直在全球范围内为我效力。

 $(function() { $('input[type=text]').on('blur', function(){ $(this).val($.trim($(this).val())); }); }); 

这是JavaScript架构师/道格拉斯·克罗克福德大师的build议。

 String.method('trim', function ( ) { return this.replace(/^\s+|\s+$/g, ''); }); 

注意:你必须为Function.prototype定义“方法”。

另外

 String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ''); }; title.trim(); // returns trimmed title 

意见

在最近的浏览器中, trim方法是默认包含的。 所以你不必明确地添加它。

主要浏览器Chrome,Firefox,Safari等支持修剪方法。 入住了Chrome 55.0.2883.95(64位),Firefox 51.0.1(64位),Safari 10.0(12602.1.50.0.10)。

一个recursion的尝试

 function t(k){ if (k[0]==' ') { return t(k.substr(1,k.length)); } else if (k[k.length-1]==' ') { return t(k.substr(0,k.length-1)); } else { return k; } } 

这样的电话:

 t(" mehmet "); //=>"mehmet" 

如果你想过滤特定的字符,你可以基本上定义一个列表string:

 function t(k){ var l="\r\n\t "; //you can add more chars here. if (l.indexOf(k[0])>-1) { return t(k.substr(1,k.length)); } else if (l.indexOf(k[k.length-1])>-1) { return t(k.substr(0,k.length-1)); } else { return k; } } 
 var word=" testWord "//add here word or space and test var x=$.trim(word); if(x.length>0) { alert('word'); } else{ alert('spaces'); }