从字符串的开始和结束修剪空格

我试图找到一种方法来修剪空格从开始和结束的标题字符串。我在用这个,但好像不管用:

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

有什么想法吗?

202362 次浏览

下面是我过去用来修剪 js 中字符串的一些方法:

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);
}

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   "));

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


Steven Levithan 从性能的角度分析了许多不同的 Javascript trim实现。

他的建议是:

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;
}

“如果你想在所有浏览器中快速处理长字符串”。

参考文献

这是我当前的代码,如果我注释第3行,第2行可以工作,但是如果我让它保持原样,就不能工作了。

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, '-');

正如 @ 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();

如果可以选择使用 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);

我知道这是一个老职位,但只是想我会分享我们的解决方案。在寻找最短代码(不是每个人都只有 简洁的正则表达式)的过程中,我们可以使用:

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

顺便说一句: 我通过 Blog.stevenlevithan.com ——更快的 JavaScript 修剪以上共享的链接运行了这个相同的测试,这个模式击败了所有其他的手!

使用 IE8,添加 test 作为 test13,结果如下:

原作长度: 226002
三分之一: 110米(长度: 225994)
长度: 225994
三分之三: 172米(长度: 225994)
三分之四: 203毫米(长度: 225994)
长度: 225994
三分之六: 312米(长度: 225994)
三分之七: 203米(长度: 225994)
长度: 225994
长度: 225994
长度: 225994
长度: 225994
31毫米(长度: 225994)
裁剪13:0ms (长度: 226002)

饰(“你好,你好吗?”) ;

:)

var word = " testWord ";   //add here word or space and test


var x = $.trim(word);


if(x.length > 0)
alert('word');
else
alert('spaces');

只要使用 string.trim()方法。它被所有主要的浏览器支持。 参考文献: < a href = “ http://www.w3school. com/jsref/jsref _ trim _ string.asp”rel = “ nofollow”> http://www.w3schools.com/jsref/jsref_trim_string.asp

当 DOM 完全加载时,可以将其添加到所有文本字段中。我从来没有一个情况下,我需要提交的领先或尾随空间,所以这样做,所有的时间全球为我工作..。

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

对此进行递归尝试

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"

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

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;
}
}

这是 JavaScript 架构师/Guru 道格拉斯·克罗克福特提出的建议。

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

注意: 您必须为 Function.model 定义“ method”。

或者

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


title.trim();    // returns trimmed title

观察

在最近的浏览器中,默认包含 修剪方法,所以不需要显式地添加它。

主流浏览器 Chrome,Firefox,Safari 等都支持 修剪方法。 登录 Chrome 55.0.2883.95(64位) ,Firefox 51.0.1(64位) ,Safari 10.0(12602.1.50.0.10)。

也可以使用 trimLeft()trimRight()

const str1 = "   string   ";
console.log(str1.trimLeft());
// => "string   "


const str2 = "   string   ";
console.log(str2.trimRight());
// => "    string"