使用Javascript计算CSV中的行数

alv*_*spo 2 javascript csv lines count

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

bob*_*nce 6

取决于你的意思.对于简单数量的换行,Robusto的答案很好.

如果您想知道代表多少 CSV数据,可能会有些困难,因为CSV字段本身可能包含换行符:

field1,"field
two",field3
Run Code Online (Sandbox Code Playgroud)

...是一行,至少是RFC4180定义的CSV 格式.(这是CSV的加重功能之一,有很多非标准的变种; RFC本身在游戏中很晚.)

因此,如果您需要应对这种情况,您必须从根本上解析每个字段.

字段可以是原始的,或者(必要时,如果它包含\n,)引用,"表示为双引号.因此,一个字段的正则表达式将是:

"([^"]|"")*"|[^,\n]*
Run Code Online (Sandbox Code Playgroud)

因此对于整行(假设它不是空的):

("([^"]|"")*"|[^,\n]*)(,("([^"]|"")*"|[^,\n]*))*\n
Run Code Online (Sandbox Code Playgroud)

并获得那些数量:

var rowsn= csv.match(/(?:"(?:[^"]|"")*"|[^,\n]*)(?:,(?:"(?:[^"]|"")*"|[^,\n]*))*\n/g).length;
Run Code Online (Sandbox Code Playgroud)

如果您足够幸运,可以处理符合RFC4180建议的CSV变体,即不带"引号的字段中没有字符,您可以使其更具可读性.像以前一样在换行符上拆分并计算"每行中的字符数.如果它是偶数,你就有一条完整的线; 如果它是一个奇数你就得分了.

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;
Run Code Online (Sandbox Code Playgroud)


Rob*_*sto 5

要计算文档中的行数(一旦将其作为 Javascript 中的字符串),只需执行以下操作:

var lines = csvString.split("\n").length;
Run Code Online (Sandbox Code Playgroud)

  • 当 csv 值中有新行时,这不会给出正确的结果。 (4认同)