从字符串开头和结尾删除空格

159

我正试图找到一种方法来删除标题字符串开头和结尾的空格。我正在使用以下代码,但似乎并不起作用:

title = title.replace(/(^[\s]+|[\s]+$)/g, '');
任何想法?

1
var s = ' 1 '; s = s.replace(/^\s+|\s+$/g, ''); alert('-' + s + '-'); // 它的工作原理是这样的,您不需要使用括号或方括号。 - ekerner
2
现在Javascript已经内置了.trim,所以这是现代浏览器的答案:https://dev59.com/EnA75IYBdhLWcg3w-OZA#3000900 - Ziggy
请参考这篇文章:http://javascriptstutorial.com/blog/trim-string/ - user5846985
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; } - Badri Gs
15个回答

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

var x = $.trim(word);

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

2

jQuery.trim(" hello, how are you? ");

:)


2
看起来你可能在开玩笑,但请记住阅读此评论的人可能会被诱惑使用你的解决方案并继续前进。 - commadelimited
$.trim(" blabh blah blah "); 正确返回 "blabh blah blah" - RAY

2
这是 JavaScript 架构师/大师 Douglas Crockford 建议的做法。
String.method('trim', function (  ) {
    return this.replace(/^\s+|\s+$/g, '');
});

注意:您需要为Function.prototype定义“method”。

或者

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

title.trim();    // returns trimmed title

观察

在最近的浏览器中,默认情况下已经包含了trim方法,因此您不必显式添加它。

主流浏览器如Chrome、Firefox、Safari等都支持trim方法。已在Chrome 55.0.2883.95(64位)、Firefox 51.0.1(64位)、Safari 10.0(12602.1.50.0.10)中进行了检查。


0

这是一个递归尝试

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

有一个微妙的区别需要注意!你正在检查空格 ' ',但问题是关于一般的空白符,包括 "\n""\t" 和其他在正则表达式中匹配的不可打印字符 /\s/ - amenthes
然后你可以将if条件语句修改为"if("\t\r\n".indexOf(k[0])>-1)",它仍然可以正常工作,因为这些已经是特定类型。 - mguven guven

0
您还可以使用 trimLeft()trimRight()
const str1 = "   string   ";
console.log(str1.trimLeft()); 
// => "string   "

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接