在javascript中拆分这个逻辑?

时间:2013-09-27 22:21:26

标签: javascript regex

我有以下文字,

              Name:Jon
               Age:25
              Gender:Male

如何拆分它以获得以下结果,

              Jon
              25
               Male

如果我使用它,

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

我得到结果[0] =姓名,结果[1] = JonAge,结果[2] = 25Gender, 当我付出时,

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

我得到的结果[0] =姓名:Jon,结果[1] =年龄:25岁,......

但我无法得到上述内容,如何同时检查冒号或新行?

3 个答案:

答案 0 :(得分: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 :(得分:1)

你做不到。使用for循环。

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

答案 2 :(得分: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"}