javascript need to do a right trim

谁说胖子不能爱 提交于 2019-12-20 11:07:02

问题


In javascript, how to I do a right trim?

I have the following:

    var s1 = "this is a test~";

     var s = s1.rtrim('~') 

but was not successful


回答1:


Use a RegExp. Don't forget to escape special characters.

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



回答2:


You can modify the String prototype if you like. Modifying the String prototype is generally frowned upon, but I personally prefer this method, as it makes the code cleaner IMHO.

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

Then call...

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



回答3:


A solution using a regular expression:

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



回答4:


There are no trim, ltrim, or rtrim functions in Javascript. Many libraries provide them, but generally they will look something like:

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

For right trims, the following is generally faster than a regex because of how regex deals with end characters in most browsers:

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



回答5:


IMO this is the best way to do a right/left trim and therefore, having a full functionality for trimming (since javascript supports string.trim natively)

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 + "]*"), '');
};

Usage example:

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 '



回答6:


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

These are currently stage 4 proposals expected to be part of ES2019. They work in NodeJS and several browsers.

See below for more info:

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




回答7:


This is old, I know. But I don't see what's wrong with substr...?

function rtrim(str, length) {
  return str.substr(0, str.length - length);
}


来源:https://stackoverflow.com/questions/8141718/javascript-need-to-do-a-right-trim

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!