繁体   English   中英

存储来自txt文件的数据

[英]Store data from a txt file

我有一个txt文件,看起来像这样:

ID Number Hour Name Mood Seconds Hour2
1 29.1 11:32:37 Tim Good 0954 11:32:34 PM
2 31.9 11:33:19 Tim Fine 1251 11:33:15 PM
3 32.0 11:54:16 Tim Excellent 1897 11:54:12 PM
4 36.6 12:00:43 Time Good 0997 12:00:37 PM

如我们所见,它不是CSV值,而是用空格分隔。 如何将这些数据存储在变量中(每列一个)? 一旦我使用html代码或javascript或jQuery将数据存储在变量中,便想使用Flot Charts对其进行绘制 ,但这将在以后发布。

这是应该起作用的东西。 您可能需要稍微调整一下,但这应该会对您有所帮助。

因此,首先我们需要加载文件并将值分配给变量。

var fileContent;
$.ajax({
    url : "text.txt",
    dataType: "text",
    success : function (data) {
        fileContent = data;
    }
});

然后,正如我所说,您必须寻找空格和换行符。 您知道,发生换行符时,可以说全部“重新开始”。

因此,让我们使用jQuery的.split()函数,如下所示:

var rows = fileContent.split("\n");

现在,您应该有一个长度为5的数组,每行一个。 遍历这些并用" "分开。 由于这些不是数据,因此我们跳过第一行(索引0)。 还应注意,最后一个空格必须跳过,因为这是数据的一部分。

var id = "";
var number = "";
var hour = "";
var name = "";
var mood = "";
var seconds = "";
var hour2 = "";

var array = [id,number,hour,name,mood,seconds,hour2];
for(var j = 0; j < rows.length; j++){
    var columns = rows[j].split(" ");
    for(var i = 0; i < columns.length; i++) {
        if(i == 5){
            $array[i].= columns[i]+" "+columns[i+1];
            break;
        }

        array[i].= columns[i];
    }
}
console.log(array);

这应该对您有很大帮助。 可能不是完美的,但是您明白了。

将数据拆分为行。 然后拆分第一行,并将结果作为其他数据/行的键。 之后,尝试防止未定义的列('PM')并将结果添加到上一列。

 var data = 'ID Number Hour Name Mood Seconds Hour2\\n1 29.1 11:32:37 Tim Good 0954 11:32:34 PM\\n1 31.9 11:33:19 Tim Fine 1251 11:33:15 PM\\n3 32.0 11:54:16 Tim Excellent 1897 11:54:12 PM\\n4 36.6 12:00:43 Time Good 0997 12:00:37 PM'; var newData = [], keys; data.split('\\n').forEach(function (row, i) { var res; if (!i) { keys = row.split(' '); } else { res = {}; row.split(' ').forEach(function (el, j) { if (keys[j]) { res[keys[j]] = el; } else { res[keys[j - 1]] += ' ' + el; // time correction } }); newData.push(res); } }); document.getElementById('out').innerHTML = '<pre>' + JSON.stringify(newData, null, 4) + '</pre>'; 
 <div id="out"></div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM