2010-03-27 1 views
25

В JavaScript, если у меня есть текстовый блок, как такУдалить строку текста в JavaScript

Line 1 
Line 2 
Line 3 

Что мне нужно сделать, чтобы позволяет сказать, удалить первую строку и превратить его в:

Line 2 
Line 3 

ответ

39

Чистейшим способ сделать это состоит в использовании раскола и присоединиться к функции, которые позволят вам манипулировать текстовый блок в виде массива строк, например, так:

// 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

вы можете сделать это в одной строке: 'textblock.split (" \ n "). Slice (1) .join (" \ n ")' – nickf

+1

Это неэффективно для большого текста со многими строками, используйте 'indexOf 'в этом случае. –

2

в двух словах: (. и в том числе его) Посмотрите на первой линии возврата (\ п) и использовать функцию JavaScript replace, чтобы удалить все до него

Вот RegEx, что делает его (surprisi ngly сложно, по крайней мере для меня ...)

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

Поскольку вы используете параметр/g paramater («global replace»), я считаю, что это выражение будет иметь эффект удаления всех строк (кроме последнего, если оно не завершено с помощью новой строки). –

+0

Я заметил это, спасибо. Проблемы с пресловутыми ножницами здесь ... – LesterDove

+0

Я думаю, что вопрос был скорее направлен на удаление * конкретной строки *, а не только на первой строке. Это решение не слишком хорошо работает для удаления произвольных строк по числу или по контенту. – ShZ

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

Это удаляет первую строку из переменной строки многострочных - протестирован в Chrome версий 23 на переменном, которая прочитанную из файла (HTML5) с концами строк/перерывами, которые показали, как CRLF (каретка return + line feed) в Notepad ++:

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

Надеюсь, что это поможет!

+8

Это хорошо для больших файлов, потому что это позволяет избежать создания гигантского массива. –

+2

Это правильный подход, если текст имеет много строк. –

+0

Надеюсь, что никто больше не использует один раз для разрывов строк. – Andy