2010-03-27 22 views
25

In Javascript, wenn ich wie so einen Textblock habenLöschen einer Zeile Text in JavaScript

Line 1 
Line 2 
Line 3 

Was ich brauchen würde, zu tun, um lässt die erste Zeile sagen löschen und schalten Sie ihn in:

Line 2 
Line 3 

Antwort

39

Der sauberste Weg, dies zu tun, ist die Spaltung und kommen Funktionen zu verwenden, die Sie den Textblock als ein Array von Linien manipulieren lassen, etwa so:

// break the textblock into an array of lines 
var lines = textblock.split('\n'); 
// remove one line, starting at the first position 
lines.splice(0,1); 
// join the array back into a single string 
var newtext = lines.join('\n'); 
+25

Sie könnten es sogar in einer Zeile tun: 'textblock.split (" \ n "). Slice (1) .join (" \ n ")' – nickf

+1

Dies ist nicht effizient für großen Text mit vielen Zeilen, verwenden Sie die 'indexOf 'Version in diesem Fall. –

2

auf den Punkt gebracht: (. und einschließlich it) Achten sie auf die erste Zeile Return (\ n) und die Funktion JavaScript replace verwenden, um alles zu entfernen, um es

ist hier ein RegEx, die es tut (surprisi ngly heikel, zumindest für mich ...)

<script type = "text/javascript"> 
var temp = new String('Line1\nLine2\nLine3\n'); 
temp = temp.replace(/[\w\W]+?\n+?/,""); 
alert (temp); 
</script> 
+0

Da Sie den Parameter/g ("global replace") verwenden, glaube ich, dass dieser Ausdruck den Effekt hat, alle Zeilen zu löschen (mit Ausnahme des letzten, wenn er nicht mit Zeilenumbrüchen endet). –

+0

Das ist mir aufgefallen, danke. Probleme mit der sprichwörtlichen Schere hier ... – LesterDove

+0

Ich denke, die Frage war eher, eine * spezifische Zeile * zu entfernen als nur die erste Zeile. Diese Lösung funktioniert nicht wirklich gut zum Löschen beliebiger Zeilen nach Nummer oder nach Inhalt. – ShZ

0
var firstLineRemovedString = aString.replace(/.*/, "").substr(1); 
33

Dies entfernt die erste Zeile aus einer Zeichenfolge variable mehrzeiligen - getestet in Chrome Version 23 auf einer Variable, die aus der Datei (HTML5) mit Zeilenenden/Pausen gelesen wurden, die als CRLF zeigte (carriage return + Zeilenvorschub) in Notepad ++:

lines = lines.substring(lines.indexOf("\n") + 1); 

Hoffe, dass hilft!

+8

Das ist gut für größere Dateien, weil es vermeidet, ein riesiges Array zu erstellen. –

+2

Dies ist der richtige Ansatz, wenn der Text viele Zeilen hat. –

+0

Ich vertraue darauf, dass niemand mehr eine einzige \ r für Zeilenumbrüche verwendet. – Andy

Verwandte Themen