修剪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'); }