2012-11-30 15 views
11

Wie entferne ich die letzte Zeile "\ n" aus einer Zeichenfolge, wenn ich nicht weiß, wie groß die Zeichenfolge sein wird?Letzte Zeile aus der Zeichenfolge entfernen

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

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

Satz/Zeile passen, – user1534664

+0

nicht Wort * Linie definieren * bitte. – moonwave99

+0

was ist letzte Zeile ?? ist es konstant oder kann variieren ... – Scorpio

Antwort

17

Versuchen:

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

Danke. Getestet und es funktioniert. – user1534664

+0

Funktioniert nicht, wenn 'x' eine einzelne Zeile enthält (abhängig von der genauen Anforderung kein Problem). –

+0

@JulienRoyer Sie haben Recht. Ich habe meine Antwort aktualisiert. BTW +1 für deine Antwort. – rekire

9

Sie können einen regulären Ausdruck (abgestimmt werden, je nachdem, was Sie unter "letzter Zeile"):

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

In Ihrem speziellen Fall der Funktion könnte in der Tat aussehen:

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

Obwohl Sie wahrscheinlich auch keine Leerzeichen am Ende haben möchten; in diesem Fall ersetzen einfach gut funktionieren könnte:

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

Beachten Sie jedoch, dass neue Versionen von Javascript (ES6 +) Stenografie Wege, dies zu tun mit einem in der Prototyp-Funktionen (trim, trimLeft, trimRight) bieten

s.trimRight() 

Prost!

0

Ein Regex wird es tun. Hier ist die einfachste:

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

See regex101 for how it works

\n entspricht den letzten Zeilenumbruch in der Zeichenfolge

.* jedes Zeichen, zwischen null und unbegrenzten Zeiten (außer Linie Terminator). Also das funktioniert, ob es begnügt sich in der letzten Zeile

$ das Ende der Zeichenfolge

Verwandte Themen