jQuery CSV插件无法将行拆分为数组的数组。

4
我将尝试使用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
2
@Steven Xu,这并不适用于JavaScript字符串。除了显而易见的区别外,"'之间没有任何区别。 - Andy E
2个回答

3

2
啊哈..我这个笨蛋,以为第一个谷歌搜索结果就是最新版本。从你的链接下载更新版本似乎解决了问题。 - Josh
1
咳咳。jquery.csv.min.js 的最新版本在 http://github.com/evanplaice/jquery-csv 上。我知道,因为我是 jquery-csv 的作者。(: - Evan Plaice
@Evan:太棒了,我已经更新了答案以反映当前位置。 - Andy E
我刚刚意识到,尽管文件名相同,但它使用了不同的解析器。你的答案使用了jquery-csv,但是op问题中的库使用了不同的API调用。正确的调用应该是$.csv.toArrays() - Evan Plaice

1
如果你只处理简单数据(没有引号),你可以这样做:
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格式的内容,我不想重新发明轮子。 - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接