javascript需要做一个正确的修剪

时间:2011-11-15 19:08:07

标签: javascript trim

在javascript中,如何正确修剪?

我有以下内容:

    var s1 = "this is a test~";

     var s = s1.rtrim('~') 

但未成功

8 个答案:

答案 0 :(得分:64)

使用RegExp。不要忘记逃避特殊角色。

s1 = s1.replace(/~+$/, ''); //$ marks the end of a string
                            // ~+$ means: all ~ characters at the end of a string

答案 1 :(得分:4)

如果您愿意,可以修改String原型。修改String原型通常不赞成,但我个人更喜欢这种方法,因为它使代码更清晰恕我直言。

String.prototype.rtrim = function(s) { 
    return this.replace(new RegExp(s + "*$"),''); 
};

然后致电......

var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s); 

答案 2 :(得分:3)

Javascript中没有trim,ltrim或rtrim函数。许多库提供它们,但通常它们看起来像:

str.replace(/~*$/, '');

对于正确的修剪,以下通常比正则表达式更快,因为正则表达式处理大多数浏览器中的结束字符:

function rtrim(str, ch)
{
    for (i = str.length - 1; i >= 0; i--)
    {
        if (ch != str.charAt(i))
        {
            str = str.substring(0, i + 1);
            break;
        }
    } 
    return str;
}

答案 3 :(得分:2)

使用正则表达式的解决方案:

"hi there~".replace(/~*$/, "")

答案 4 :(得分:2)

IMO这是进行右/左修剪的最佳方式,因此具有完整的修剪功能(因为javascript本身支持string.trim

String.prototype.rtrim = function (s) {
    if (s == undefined)
        s = '\\s';
    return this.replace(new RegExp("[" + s + "]*$"), '');
};
String.prototype.ltrim = function (s) {
    if (s == undefined)
        s = '\\s';
    return this.replace(new RegExp("^[" + s + "]*"), '');
};

用法示例:

var str1 = '   jav '
var r1 = mystring.trim();      // result = 'jav'
var r2 = mystring.rtrim();     // result = '   jav'
var r3 = mystring.rtrim(' v'); // result = '   ja'
var r4 = mystring.ltrim();     // result = 'jav '

答案 5 :(得分:0)

str.trimEnd();
str.trimRight();

当前是第4阶段提案,预计将成为ES2019的一部分。它们可以在NodeJS和几种浏览器中工作。

有关更多信息,请参见下文

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd

答案 6 :(得分:0)

这将从字符串的右侧删除指定的字符串或字符

function rightTrim(sourceString,searchString) 
{ 
    for(;;) 
    {
        var pos = sourceString.lastIndexOf(searchString); 
        if(pos === sourceString.length -1)
        {
            var result  = sourceString.slice(0,pos);
            sourceString = result; 
        }
        else 
        {
            break;
        }
    } 
    return sourceString;  
}

请这样使用:

rightTrim('sourcecodes.....','.'); //outputs 'sourcecodes'
rightTrim('aaabakadabraaa','a');   //outputs 'aaabakadabr'

答案 7 :(得分:-1)

这是旧的,我知道。但我不知道substr ...的错误是什么?

function rtrim(str, length) {
  return str.substr(0, str.length - length);
}
相关问题