javascript - 使用 Javascript 计算 CSV 中的行数

标签 javascript csv count lines

我正在想办法使用 Javascript 计算 .csv 文件中的行数,有人可以指导我使用任何有用的提示或资源吗?

最佳答案

取决于你所说的一行是什么意思。对于简单数量的换行符,Robusto 的回答很好。
如果您想知道代表多少行 CSV 数据,事情可能会更困难一些,因为 CSV 字段本身可能包含换行符:

field1,"field
two",field3
...是一行,至少在 RFC4180 定义的 CSV 中. (有许多非标准变体是 CSV 的恶化特征之一;RFC 本身很晚才出现。)
因此,如果您需要处理这种情况,则必须从本质上解析每个字段。
一个字段可以是原始的,或者(如果它包含 \n, 则必须)引用,用 "表示为双引号。所以一个字段的正则表达式是:
"([^"]|"")*"|[^,\n]*
所以对于整行(假设它不是空的):
("([^"]|"")*"|[^,\n]*)(,("([^"]|"")*"|[^,\n]*))*\n
并获得这些数量:
var rowsn= csv.match(/(?:"(?:[^"]|"")*"|[^,\n]*)(?:,(?:"(?:[^"]|"")*"|[^,\n]*))*\n/g).length;
如果您有幸处理符合 RFC4180 建议的 CSV 变体,即没有 "未引用字段中的字符,您可以使其更具可读性。像以前一样在换行符上拆分并计算 " 的数量每行中的字符。如果它是偶数,则您有完整的一行;如果它是一个奇数,你就会 split 。
var lines= csv.split('\n');
for (var i= lines.length; i-->0;)
    if (lines[i].match(/"/g).length%2===1)
        lines.splice(i-1, 2, lines[i-1]+lines[i]);
var rowsn= lines.length;

关于javascript - 使用 Javascript 计算 CSV 中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2952805/

相关文章:

python - 使用 SQLite 进行复杂的 SQL 查询

javascript - 任何 JavaScript 丑化器/缩小器都可以忽略文件的一部分吗?

mysql - 使用shell脚本将CSV文件上传到数据库

MySQL 计数该值是否之前没有出现过

python-3.x -\ufeff 在 Visualstudio 上写入和读取 csv 文件

excel - 如何将 .xlsx 文件转换为 .CSV 文件,维护可点击的链接

mysql - 计算一行的值在表中出现了多少次并将结果条件化为选择 mysql

javascript - 如何使用 javascript 在 jade 文件输出中动态插入标签?

javascript - 让 Jasmine 在服务器端运行

javascript - 将省略号添加到最后可用的代码行