2012-11-30 21 views
11

Come rimuovere l'ultima riga "\ n" da una stringa, se non so quanto sarà grande la stringa?Rimuovi l'ultima riga dalla stringa

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

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

frase/linea, non di parola – user1534664

+0

Definire * linea * per favore. – moonwave99

+0

cos'è l'ultima riga ?? è costante o può variare ... – Scorpio

risposta

17

Prova:

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

Grazie. Testato e funziona. – user1534664

+0

Non funziona se 'x' contiene una sola riga (potrebbe non essere un problema a seconda dell'esigenza esatta). –

+0

@JulienRoyer Hai ragione. Ho aggiornato la mia risposta. Btw +1 per la tua risposta. – rekire

9

È possibile utilizzare un'espressione regolare (da accordare a seconda di cosa si intende per "ultima riga"):

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

Nel vostro caso specifico il funzione potrebbe infatti assomigliare:

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

Anche se probabilmente non vuoi nemmeno avere spazi alla fine; in questo caso una semplice sostituzione potrebbe funzionare bene:

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

Tenete presente, tuttavia, che le nuove versioni di Javascript (ES6 +) offrono modi stenografici di fare questo con built-in funzioni di prototipo (trim, trimLeft, trimRight)

s.trimRight() 

Cheers!

0

Una regex lo farà. Ecco la più semplice:

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

See regex101 for how it works

\n corrisponde l'ultima interruzione di linea nella stringa

.* corrisponde a qualsiasi carattere, tra zero e un numero illimitato di volte (ad eccezione di terminatori di linea). Quindi, questo funziona se non ci sono contenuti nell'ultima riga

$ per abbinare la fine della stringa