2013-09-27 43 views
0

我有以下的文字,邏輯分裂這在JavaScript?

   Name:Jon 
       Age:25 
       Gender:Male 

如何分割這得到以下結果,

   Jon 
       25 
       Male 

,如果我用這個,

  var results = file.split(":"); 

我得到的結果[0] =名稱,結果[1] = JonAge,結果[2] = 25Gender, 當我給,

  var results = file.split("\n"); 

我得到的結果[0] =名稱:喬恩,結果[1] =年齡:25,...

,但我不能得到上面的,如何檢查一個冒號或新同時在線?

+0

在拆分之前,您可以做一些字符串替換。 – Izmaki

回答

4

您需要先拆就換行,那麼冒號:

file.split('\n').map(function(line){return line.split(':')[1];}) 

這可以通過一個循環來完成,很明顯,但map功能使得它漂亮和整潔。

你也可以使用正則表達式:

file.match(/[^:]+$/gm) 

最後,你可以通過創建一個分裂功能的陣列工作擴展陣列的功能:

Array.prototype.split = function(s) { 
    return this.map(function(x) { return.x.split(s); }); 
} 

然後你可以鏈你分裂,你會得到一個數組陣列:

var results = file.split('\n').split(':'); 
console.log('Name: ' + results[0][1]); 
console.log('Age: ' + results[1][1]); 
console.log('Gender: ' + results[2][1]); 

你選擇的方法很大程度上取決於你想要如何「安全」。也就是說,你關心的字段名稱或值格式不正確輸入或冒號....

1

你不能。使用for循環。

var r = file.split("\n"); 
var results = []; 
for (var i = 0; i < r.length; i++) { 
    results[i] = r[i].split(":")[1]; 
} 
0

這可以通過兩個步驟來完成,首先你要通過換行到文本拆分:

lines = str.split('\n') 

然後經每行迭代,並用冒號分開每一個:

final = {}; 
for (pair in lines){ 
    var split = lines[ pair ].split(':'); 

    var name = split[ 0 ].trim(); //cleaning out any whitespacve 
    var value = split[ 1 ].trim(); //cleaning out any whitespacve 

    final[ name ] = value; 
} 

final現在爲:

Object {Name: "Jon", Age: "25", Gender: "Male"}