2016-12-15 3 views
-2

Existe-t-il un moyen de supprimer le nombre et l'espace blanc environnant d'une ligne? Je ne veux pas supprimer mes espaces. Parfois, mon code gèle, et je dois le copier avec les chiffres, donc je suis en train de faire quelque chose qui supprime les numéros de chaque lignenuméro de bande à partir du début de la ligne

9 if (5==5) { 
10  console.log('Examples rock!') 
11 else { 
12  console.log('Stuff') 
13 } 

Ligne 1 serait if (x==5) { plus tard, le nombre et les espaces autour disparu. Je dois juste être capable de le faire pour 1 ligne, comme je peux itérer à travers

Existe-t-il une bonne regex ou une autre méthode de faire cela?

+0

Pourquoi y at-il des numéros pré-fixés sur chaque ligne de code? Un éditeur vous donnera les numéros de ligne. –

+1

Donc, est-ce une chaîne? – epascarello

+1

Où écrivez-vous ce genre de codes? Alien repéré: P –

Répondre

2

Je suppose que vous avez une chaîne qui contient les numéros de code et de la ligne, je sais que cela arrive lorsque vous copiez le code à partir des sorties jolies d'impression dans les pages Web

" 9 if (x==5) {\n\ 
10  console.log('Examples rock!')\n\ 
11 else {\n\ 
12  console.log('Stuff')\n\ 
13 }".replace(/^\s*\d+\s/gm,""); 

explication de reg exp

^ - start of line 
\s* - one or more white spaces 
\d+ - one or more numbers 
\s - single white space 

function remove() { 
 
    document.getElementById("out").value = document.getElementById("in").value.replace(/^\s*\d+\s/gm,""); 
 
}
textarea { width:100%; min-height: 100px; }
<label for="in">Input</label> 
 
<textarea id="in"> 
 
    9 if (5==5) { 
 
10  console.log('Examples rock!') 
 
11 else { 
 
12  console.log('Stuff') 
 
13 } 
 
</textarea> 
 
<button onclick="remove()">run</button> 
 
<br/> 
 
<label for="out">Output</label> 
 
<textarea id="out"></textarea>

2

Vous pouvez remplacer les lignes en utilisant une expression régulière.

function stripNumbers(text) { 
 
    return text.split('\n').map(function(line) { 
 
    let tokens = line.match(/^\s*\d+ (.*)$/); 
 
    return tokens && tokens.length > 0 ? tokens[1] : line; 
 
    }).join('\n'); 
 
} 
 

 
let editor = document.getElementById('editor'); 
 
editor.value = stripNumbers(editor.value);
<textarea id="editor" rows="7" cols="72"> 
 
9 if (x==5) { 
 
10  console.log('Examples rock!') 
 
11 else { 
 
12  console.log('Stuff') 
 
13 } 
 
</textarea>

+0

Quel est le but de vérifier si la longueur de 0? – PAS

+0

Chaque ligne renvoie 'null' quand je l'exécute. – PAS

+0

@PAS Essayez de changer 'let' en' var', peut-être votre navigateur. Je n'utilise que 'let' car il ne pollue pas l'espace global. –

0

Cela fera pour une grande variété de cas, même s'il y a plus d'un jeux de chiffres, en supposant tout ce qui est en forme de vos lignes met toujours un espace après le nombre. J'ai utilisé sed 4.2.2, mais cela devrait fonctionner en Perl, Python, JavaScript et d'autres aussi.

sed -r "s/^([ \t]*[0-9])* //" 

Pour JavaScript, l'utilisation String.replace (re, remplacement) comme suit:

function removeLineNumbering(line) 
 
{ 
 
    return line.replace(/^([ \t]*[0-9])* /gm, ""); 
 
} 
 

 
document.getElementById('editor').value = removeLineNumbering(editor.value);
<textarea id="editor" rows="5" cols="50"> 
 
    9 if (x==5) { 
 
10  console.log('Examples rock!') 
 
11 else { 
 
12  console.log('Stuff') 
 
13 } 
 
</textarea>