Here is one more suggestion. Handling data in this way is always risky because it can infiltrate errors. But here it is:
var texto = document.body.innerHTML.split('\n').filter(Boolean); // só para o exemplo do jsFiddle ir buscar texto
var linhas = texto.map(function(linha) {
if (linha.match(/^\s+$/)) return; // linhas vazias
linha = linha.split(/^\s+|\s+$/).join(''); // limpa linhas que começam ou acabam com espaços
return linha.split(/[\s]{2,}/);
}).filter(Boolean);
var campos = ['nome', 'rg', 'data', 'value'];
var lista = {};
campos.forEach(function(campo, i) {
lista[campo] = []; // criar a array para cada campo
linhas.forEach(function(linha) {
lista[campo].push(linha[i]); // adicionar valor à array
});
});
console.log(lista);
Result:
{
"nome": ["Carlos Alberto", "Juliano Fontes", "Carlos ALberto"],
"rg": ["xxxxxxx", "xxxxxxx", "xxxxxxx"],
"data": ["11/02/2016", "12/02/2016", "13/02/2016"],
"value": ["$103.10", "$102.10", "$500.00"]
}
jsFiddle: link
If you have this text in a variable, just replace it:
var texto = document.body.innerHTML.split('\n').filter(Boolean);
by:
var texto = tuaVariavel.split('\n').filter(Boolean);