web-dev-qa-db-fra.com

Supprimer une ligne de texte en javascript

En javascript, si j'ai un bloc de texte comme ça

Line 1
Line 2
Line 3

Que devrais-je faire pour supprimer la première ligne et la transformer en:

Line 2
Line 3
31
Shard

Pour ce faire, le moyen le plus simple consiste à utiliser les fonctions de scission et de jointure, ce qui vous permettra de manipuler le bloc de texte comme un tableau de lignes, comme suit:

// 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');
51
Dan Story

Cela supprime la première ligne d'une variable de chaîne multiligne - testée dans la version 23 de Chrome sur une variable lue à partir d'un fichier (HTML5) avec des fins de ligne/sauts affichés sous la forme CRLF (retour chariot + saut de ligne) dans Notepad ++:

var lines = `first
second
third`;

// cut the first line:
console.log( lines.substring(lines.indexOf("\n") + 1) );

// cut the last line:
console.log( lines.substring(lines.lastIndexOf("\n") + 1, -1 ) )

J'espère que cela pourra aider!

35
Kozuch

En un mot: recherchez le retour à la première ligne (\ n) et utilisez la fonction JavaScript replace pour tout supprimer (et l'inclure).

Voici un RegEx qui le fait (étonnamment difficile, du moins pour moi ...)

<script type = "text/javascript">
var temp = new String('Line1\nLine2\nLine3\n');
temp = temp.replace(/[\w\W]+?\n+?/,"");
alert (temp);
</script>
2
LesterDove
var firstLineRemovedString = aString.replace(/.*/, "").substr(1);
0
Eli Grey

Je suis allé un peu plus loin pour vous permettre de sélectionner le nombre de lignes à partir du début que vous souhaitez supprimer:

J'utilise cette expression régulière où X est le nombre de lignes que vous souhaitez supprimer +1 (?:.*?\n){X}(?:.*?\n)

const lines = `Line1
Line2
Line3
Line4`;
const deleteLines = (string, n = 1)=>{
  return string.replace(new RegExp(`(?:.*?\n){${n-1}}(?:.*?\n)`), '');
};
console.log(deleteLines(lines, 2));

0
Matt Walterspieler