使用Javascript计算CSV中的行数
答
要看你用线是什么意思。对于简单的换行符,Robusto的答案很好。
如果你想知道有多少行表示CSV数据,事情可能会有点困难,作为一个CSV场自身也可以包含换行符:
field1,"field
two",field3
...是一个行,至少在CSV中定义为RFC4180。 (这是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;
答
计算行数的文件中(一旦你拥有了它在Javascript中的字符串),简单地做:
var lines = csvString.split("\n").length;
答
您可以使用'。'匹配除了换行符 处的换行符之外的所有内容,它将不会计入新的行。对于多行标志使用'm',对于全局使用'g'。
function getLines(s){
return s.match(/^(.*)$/mg);
}
alert(getLines(string).length)
如果你不介意跳过空行是simpler- 但有时你需要保持他们spaceing。
function getLines(s){ return s.match(/(.+)/ g); }
答
如果你问到数以CSV行数,那么你可以用这个例子..
http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/
它以csv文件和行的弹出窗口显示号码。
很酷。没有真正想到这个解决方案,我试试看。谢谢! – alvincrespo 2010-06-01 19:54:58