Удалить последнюю строку из строки

Как удалить последнюю строку "\n" из строки, если я не знаю, насколько велика строка?

var tempHTML = content.document.body.innerHTML;
var HTMLWithoutLastLine = RemoveLastLine(tempHTML);

function RemoveLastLine(tempHTML)
{
   // code
} 

Ответы

Ответ 1

Try:

if(x.lastIndexOf("\n")>0) {
    return x.substring(0, x.lastIndexOf("\n"));
} else {
    return x;
}

Ответ 2

Вы можете использовать регулярное выражение (настраиваться в зависимости от того, что вы подразумеваете под "последней строкой" ):

return x.replace(/\r?\n?[^\r\n]*$/, "");

Ответ 3

В вашем конкретном случае функция действительно может выглядеть так:

function(s){
  return i = s.lastIndexOf("\n")
    , s.substring(0, i)
}

Хотя, вероятно, вы также не хотите иметь пробелы в конце; в этом случае простая замена может работать хорошо:

s.replace(/s+$/, '')

Помните, однако, что новые версии Javascript (ES6 +) предлагают сокращенные способы выполнения этого со встроенными функциями прототипа (trim, trimLeft, trimRight)

s.trimRight()

Ура!

Ответ 4

Регулярное выражение сделает это. Здесь самый простой:

string.replace(/\n.*$/, '')

См. regex101 о том, как он работает

\n соответствует последнему разрыву строки в строке

.* соответствует любому символу, от нуля до неограниченного времени (кроме терминаторов строк). Таким образом, это работает независимо от того, есть ли контент в последней строке

$, чтобы соответствовать концу строки