我有以下文字,
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岁,......
但我无法得到上述内容,如何同时检查冒号或新行?
答案 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"}