使用Javascript计算CSV中的行数

时间:2010-06-01 19:46:48

标签: javascript csv count lines

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

4 个答案:

答案 0 :(得分:6)

取决于你的意思。对于简单的换行数,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变体,即不带引号的字段中没有"个字符,您可以使其更具可读性。像以前一样在换行符上拆分,并计算每行中"个字符的数量。如果它是偶数,你就有一条完整的线;如果它是一个奇数,你就会分裂。

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;

答案 1 :(得分:2)

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

var lines = csvString.split("\n").length;

答案 2 :(得分:2)

你可以使用'。'匹配除了最后一行换行之外的所有内容 - 它不会计算引用的新行数。将'm'用于多行标记,将'g'用于全局。

function getLines(s){
    return s.match(/^(.*)$/mg);
}

alert(getLines(string).length)

如果您不介意跳空行,则更简单 - 但有时你需要让它们保持空间。

function getLines(s){     return s.match(/(.+)/ g); }

答案 3 :(得分:0)

如果要求计算csv中的行数,则可以使用此示例..

http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/

它需要csv文件并在弹出窗口中显示行数..