2013-09-27 38 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"}