问题
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