解析CSV数据的JavaScript代码有人知道我在哪里可以找到一些javascript代码来解析CSV数据吗?
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
它是一个jQuery插件,用于将CSV解析为Javascript数据的端到端解决方案。它处理在RFC 4180,还有一些弹出的Excel/GoogleSpreadsheed导出(即主要涉及空值),而规范缺少这些导出。
例子:
曲目,艺术家,专辑,年份
“危险”,“Busta节奏”,“灾难降临时”,1997年
// calling thismusic = $.csv.toArrays(csv)// outputs...[ ["track","artist","album","year"], ["Dangerous","Busta Rhymes","When Disaster Strikes","1997"]]console.log(music[1][2]) // outputs: 'When Disaster Strikes'
最新情况:
哦,是的,我也应该提到它是完全可配置的。
music = $.csv.toArrays(csv, { delimiter:"'", // sets a custom value delimiter character separator:';', // sets a custom field separator character});
更新2:
它现在也适用于Node.js上的jQuery。因此,您可以选择使用相同的lib进行客户端或服务器端解析。
慕运维8079593
TA贡献1876条经验 获得超5个赞
我有一个实施作为电子表格项目的一部分。
这段代码还没有经过彻底的测试,但是欢迎任何人使用它。
但是,正如一些答案所指出的那样,如果您实际拥有的话,您的实现可能要简单得多。DSV或TSV文件,因为它们不允许在值中使用记录和字段分隔符。另一方面,csv实际上可以在字段中有逗号和换行符,这破坏了大多数正则表达式和基于拆分的方法。
var CSV = {parse: function(csv, reviver) { reviver = reviver || function(r, c, v) { return v; }; var chars = csv.split(''), c = 0, cc = chars.length, start, end, table = [], row; while (c < cc) { table.push(row = []); while (c < cc && '\r' !== chars[c] && '\n' !== chars[c]) { start = end = c; if ('"' === chars[c]){ start = end = ++c; while (c < cc) { if ('"' === chars[c]) { if ('"' !== chars[c+1]) { break; } else { chars[++c] = ''; } // unescape "" } end = ++c; } if ('"' === chars[c]) { ++c; } while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) { ++c; } } else { while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) { end = ++c; } } row.push(reviver(table.length-1, row.length, chars.slice(start, end).join(''))); if (',' === chars[c]) { ++c; } } if ('\r' === chars[c]) { ++c; } if ('\n' === chars[c]) { ++c; } } return table;},stringify: function(table, replacer) { replacer = replacer || function(r, c, v) { return v; }; var csv = '', c, cc, r, rr = table.length, cell; for (r = 0; r < rr; ++r) { if (r) { csv += '\r\n'; } for (c = 0, cc = table[r].length; c < cc; ++c) { if (c) { csv += ','; } cell = replacer(r, c, table[r][c]); if (/[,\r\n"]/.test(cell)) { cell = '"' + cell.replace(/"/g, '""') + '"'; } csv += (cell || 0 === cell) ? cell : ''; } } return csv;}};
添加回答
举报
0/150
提交
取消