2016-09-15 2 views
1

ich einen String-Eingang wie diese:String-Eingang mit Zeilenumbrüchen in Arrays

2 4 6 
1 2 3 
2 
1 
0 

wie jede Zeile als Array speichern? Ich benutze

input = input.split("\n"); 

, die mir geben:

[['2', ' ', '4', ' ', '6'], ['1', ' ', '2', ' ', '3'], ['2'], ['1'], ['0']] 

dann geschleift i jedes Array mit regex:

var arr = ['2', ' ', '4', ' ', '6']; 
var reg = /[^\s]/g; 
var arr2 = []; 
for (var i = 0; i < arr.length; i++) { 
    if (arr[i].match(reg)) { 
     console.log(arr[i]); 
     arr2.push(arr[i]); 
    } 
    } 
arr = arr2; // arr = [ '2', '4', '6' ]; 

und so weiter. Gibt es dafür einen schnelleren Weg? Ich habe komplexe Regex ausprobiert, aber ich habe versagt. Eingabe ist immer 4 Zeilen.

+0

denke ich, alles, was Sie brauchen, ist 'input.match (/ \ d +/g)' –

+0

Oder 'Eingang. split (/ \ D + /) ' – Oriol

Antwort

0

Funktioniert es, wenn Sie Zeilenumbrüche durch Leerzeichen ersetzen und dann in Leerzeichen aufteilen?

var arr = input.replace(/\n/g,' ').split(' '); 
+0

Es funktioniert, aber macht nur ein Array. –

0

Sie können einmal für die \ n und eine für den Raum aufgeteilt:

var input = "2 4 6\n1 2 3\n2\n1\n0"; 
input = input.split("\n"); 
for (var i =0; i<input.length; i++) { 
    var tab = input[i].split(" ") ; 
    alert(tab.join("-")) ; 
} 
Verwandte Themen