在javascript中,如何正确修剪?
我有以下内容:
var s1 = "this is a test~";
var s = s1.rtrim('~')
但未成功
答案 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);
}