2016-09-15 53 views
1

我有一個這樣的字符串輸入:用線串輸入中斷與陣列

2 4 6 
1 2 3 
2 
1 
0 

如何保存每一行作爲一個數組?我用

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

這給我:

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

然後我每次循環數組的正則表達式:

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' ]; 

等。有沒有更快的方法來做到這一點?我嘗試過複雜的正則表達式,但我失敗了。輸入總是4行。

+0

我認爲,所有你需要的是'input.match(/ \ d +/G)' –

+0

或'輸入。 split(/ \ D + /)' – Oriol

回答

0

如果用空格替換換行符然後拆分成空格,它會起作用嗎?

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

它可以工作,但只能創建一個數組。 –

0

可以爲空間一次\ n和一個分裂:

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("-")) ; 
}