В javascript, как мне сделать правильную обрезку?
У меня есть следующее:
var s1 = "this is a test~";
var s = s1.rtrim('~')
но не удалось
В javascript, как мне сделать правильную обрезку?
У меня есть следующее:
var s1 = "this is a test~";
var s = s1.rtrim('~')
но не удалось
Используйте RegExp. Не забывайте избегать специальных символов.
s1 = s1.replace(/~+$/, ''); //$ marks the end of a string
// ~+$ means: all ~ characters at the end of a string
Вы можете изменить прототип String, если хотите. Модификация прототипа String, как правило, неодобрительно, но я лично предпочитаю этот метод, так как он делает код чистым IMHO.
String.prototype.rtrim = function(s) {
return this.replace(new RegExp(s + "*$"),'');
};
Затем вызовите...
var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s);
Решение с использованием регулярного выражения:
"hi there~".replace(/~*$/, "")
В Javascript нет функций обрезки, ltrim или rtrim. Многие библиотеки предоставляют их, но обычно они будут выглядеть примерно так:
str.replace(/~*$/, '');
Для правых обрезков, как правило, быстрее, чем регулярное выражение, из-за того, как regex имеет дело с конечными символами в большинстве браузеров:
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;
}
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 '
str.trimEnd();
str.trimRight();
В настоящее время это предложения четвертого этапа, которые, как ожидается, станут частью ES2019. Они работают в NodeJS и нескольких браузерах.
Смотрите ниже для получения дополнительной информации:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd
Это старое, я знаю. Но я не вижу, что случилось с substr...?
function rtrim(str, length) {
return str.substr(0, str.length - length);
}