Подтвердить что ты не робот

Javascript нужно сделать правую отделку

В javascript, как мне сделать правильную обрезку?

У меня есть следующее:

    var s1 = "this is a test~";

     var s = s1.rtrim('~') 

но не удалось

4b9b3361

Ответ 1

Используйте RegExp. Не забывайте избегать специальных символов.

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

Ответ 2

Вы можете изменить прототип 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); 

Ответ 3

Решение с использованием регулярного выражения:

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

Ответ 4

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

Ответ 5

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 '

Ответ 6

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

В настоящее время это предложения четвертого этапа, которые, как ожидается, станут частью ES2019. Они работают в NodeJS и нескольких браузерах.

Смотрите ниже для получения дополнительной информации:

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

Ответ 7

Это старое, я знаю. Но я не вижу, что случилось с substr...?

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