【问题标题】:jQuery CSV plugin won't split rows into arrays-of-arraysjQuery CSV 插件不会将行拆分为 arrays-of-arrays
【发布时间】:2010-07-14 13:55:25
【问题描述】:

我正在尝试使用 jQuery“CSV”插件,如下所述:http://code.google.com/p/js-tables/wiki/CSV

根据文档:

// Convert CSV data into array of arrays
jQuery.csv()("1,2,3\n4,5,6\n7,8,9\n"); // = [ [1,2,3], [4,5,6], [7,8,9] ]

但是当我尝试做类似的事情时,它似乎只是将“\n”视为数组元素中间的另一个字符。

我做错了什么? 我正在使用 jQuery 1.4.2 和 Firefox 3.5.10 进行测试。我也尝试过使用 jQuery 1.3 并得到相同的结果。

如果插件有问题,那么有人可以推荐另一个插件来读取 CSV 吗? 我的最终目标是将 CSV 从字符串转换为 HTML 表格;我能找到的唯一一个专门执行此操作的插件需要 CSV 来自文件,这对我的任务来说是不可取的。

这是我放在一起的最小测试页面,说明它没有将行分成子数组:

<html>
<head>
  <title>CSVtest</title>
  <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
  <script type="text/javascript" src="jquery.csv.js"></script>
  <script type="text/javascript">
     $(document).ready(function() {
      var lines = $.csv()("a,b\nc,d");
      alert(lines[0][1]); // Displays: b 
                          //           c instead of the expected b
     });
  </script>
</head>
<body>
</body>
</html>

【问题讨论】:

  • 确保您使用的是双引号而不是单引号,这样在确认换行方面效果不佳。
  • @Steven Xu,JavaScript 字符串不是这样。除了显而易见的,"' 之间没有区别。

标签: javascript jquery html csv html-table


【解决方案1】:

确保您使用的是插件的latest version。我使用 jQuery 1.4.2 和 http://js-tables.googlecode.com/svn/trunk/jquery.csv.min.js 中的(现已过时的)CSV 插件复制并粘贴了您的示例,它工作正常。

http://jsfiddle.net/KRzzF/

在 IE8、IE6、Google Chrome 和 Firefox 中测试。我也测试过

alert(lines[1][1]);

果然,警报显示为“d”。

【讨论】:

  • 啊哈.. 愚蠢的老我,我相信第一个谷歌匹配将是最新版本。从您的链接下载较新版本似乎可以解决问题。
  • 咳咳。 jquery.csv.min.js 的最新版本是@github.com/evanplaice/jquery-csv。我知道,我是 jquery-csv 的作者。 (:
  • @Evan:太棒了,我已经更新了答案以反映当前位置。
  • 我刚刚意识到,即使文件名相同,但它使用的是不同的解析器。您的答案使用 jquery-csv 但操作问题中库的 API 调用。电话应该是$.csv.toArrays()
【解决方案2】:

如果你只处理简单的数据(没有引号)你可以这样做:

function csv(text) {
  var lines = text.split("\n");
  for ( var i = 0; i < lines.length; i++ ) {
    if (!lines[i])
      lines.splice(i, 1);
    else 
      lines[i] = lines[i].split(",");
  }
  return lines;
}

【讨论】:

  • 我可以自己编写解析代码,但我无法控制传入的数据流;可以在引号中嵌入逗号、在引号中嵌入引号或其他我不希望重新发明的标准 CSV 内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
相关资源
最近更新 更多