2012-11-30 23 views
11

Jak usunąć ostatni wiersz "\ n" z ciągu, jeśli nie wiem, jak duży będzie ciąg znaków?Usuń ostatnią linię ze stringa

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

function RemoveLastLine(tempHTML) 
{ 
    // code 
} 
+0

zdanie/linii, a nie słowo – user1534664

+0

Definiowanie linii * * proszę. – moonwave99

+0

jaka jest ostatnia linia? czy jest stały lub może się różnić ... – Scorpio

Odpowiedz

17

Spróbuj:

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

Dzięki. Testowane i działa. – user1534664

+0

Nie działa, jeśli 'x' zawiera jedną linię (może nie być problemem w zależności od potrzeby). –

+0

@JulienRoyer Masz rację. Zaktualizowałem swoją odpowiedź. Btw +1 za odpowiedź. – rekire

9

Można użyć wyrażenia regularnego (być dostrojone w zależności od tego, co masz na myśli przez "ostatniej linii"):

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

W Twoim konkretnym przypadku funkcja może rzeczywiście wyglądać następująco:

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

Chociaż prawdopodobnie nie chcesz mieć spacji na końcu; w tym przypadku prosta zastąpić może działać dobrze:

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

Pamiętaj jednak, że nowe wersje Javascript (ES6 +) oferują skrótowym sposoby robienia tego z wbudowanych funkcji prototypowych (trim, trimLeft, trimRight)

s.trimRight() 

Pozdrawiam!

0

Wykonanie regex. Oto najprostsza:

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

See regex101 for how it works

\n mecze ostatni podział wiersza w ciągu

.* dopasowuje dowolny znak, od zera do nieograniczonej razy (za wyjątkiem linii terminatorów). Tak to działa, czy nie ma treści na ostatniej linii

$ dopasować końca łańcucha