qq_花开花谢_0
它是一个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
我有一个实施作为电子表格项目的一部分。这段代码还没有经过彻底的测试,但是欢迎任何人使用它。但是,正如一些答案所指出的那样,如果您实际拥有的话,您的实现可能要简单得多。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;}};