【问题标题】:parsing tab delimited file in javascript在javascript中解析制表符分隔文件
【发布时间】:2015-02-14 05:26:41
【问题描述】:

我无法更改服务器端,但我得到的文件如下所示:

0   20.59339    138402
1   11.20062    75276
2   32.07597    215573
3   12.2029 82012
4   6.800035    45701
5   0.6548425   4401
6   0.8643445   5809
7   0.7174848   4822
8   0.813457    5467
9   0.7198655   4838
10  0.8152425   5479
11  1.396878    9388
12  1.93953 13035
13  4.410404    29641
14  1.392266    9357
15  0.7592959   5103
16  1.040368    6992
17  1.603107    10774

我可以使用 Liquid、javascript 和 jquery。从 Liquid 中,我将内容塞入一个没有样式的 div 中,希望我能以某种方式解析文件。但是当我在 Firebug 中查看它时,我只看到我的 div 的内容是一个巨大的字符串(至少它看起来是这样的)。

编辑:我需要对数据做一些数学运算。

【问题讨论】:

  • 在换行符处为行数组拆分数据,但不确定预期的输出应该是什么。如果您只想要显示的内容,请将数据放入 <pre> 标记中,无需任何解析

标签: javascript jquery liquid


【解决方案1】:

我不确定这是否正是您要查找的内容,但如果您需要对数据中的数字进行计算,那么您可以尝试以下操作:

var data;
$.get('data.txt', function(d){
    data = d;
});

然后首先根据换行符拆分该数据:

data = data.split(/\r?\n/);

然后你可以根据空格进行拆分,你会有一个合理的方式来查看数据:

var lines = [];
for(var i = 0; i < data.length; i++){
    lines.push(data[i].split(/[ ]+/));
}

当然,这是一个非常简单的分解...您可能想要更改最后一部分以更易于访问。但是,您可以编写一个函数来读取一行并相应地操作数据,其中

line[0][0] - 索引,或行号和第一列

line[0][1] - 第二列

line[0][2] - 第三列

例如:

>lines[4]
>["4", "6.800035", "45701"]

【讨论】:

  • 你能解释一下lines.push(data[i].split(/[ ,]+/));做?它工作得很好,但作为一个正则表达式菜鸟,我看不出发生了什么。
  • 抱歉,我脑子里放了一个小屁。逗号是完全没有必要的。我现在要修复它。但是, /[ ]+/ 只会匹配一次到无限次之间的空格字符。 String.prototype.split() 采用分隔符(本例中的正则表达式)并将其与整个字符串匹配。因此,对于每一行(字符串),您将其拆分为基于空格的数组。
猜你喜欢
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多