Подсчитайте количество строк в CSV с помощью Javascript - PullRequest
2 голосов
/ 01 июня 2010

Я пытаюсь придумать способ подсчета количества строк в файле .csv, используя Javascript, какие-либо полезные советы или ресурсы, на которые кто-то может мне направить?

Ответы [ 4 ]

6 голосов
/ 02 июня 2010

Зависит от того, что вы подразумеваете под линией. Для простого количества новых строк ответ Робусто подходит.

Если вы хотите узнать, сколько строк данных CSV, которые представляют, все может быть немного сложнее, так как само поле CSV может содержать новую строку:

field1,"field
two",field3

... - это одна строка, по крайней мере, в CSV, как определено в RFC4180 . (Это одна из отягчающих черт CSV, что существует так много нестандартных вариантов; сам RFC очень опоздал к игре.)

Так что, если вам нужно справиться с этим делом, вам придется по существу проанализировать каждое поле.

Поле может быть необработанным или (обязательно, если оно содержит \n или ,) в кавычках, с ", представленным в двойных кавычках. Таким образом, регулярное выражение для одного поля будет:

"([^"]|"")*"|[^,\n]*

и так для всей строки (при условии, что она не пуста):

("([^"]|"")*"|[^,\n]*)(,("([^"]|"")*"|[^,\n]*))*\n

и узнать их количество:

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

Если вам повезло иметь дело с вариантом CSV, который соответствует рекомендации RFC4180 об отсутствии символов " в полях без кавычек, вы можете сделать это немного более читабельным. Разделите на новые строки, как и раньше, и посчитайте количество " символов в каждой строке. Если это четное число, у вас есть полная линия; если это нечетное число, у вас есть разделение.

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;
2 голосов
/ 02 июня 2010

Вы можете использовать «.» чтобы сопоставить все в строке, кроме новой строки в конце это не будет считать цитируемые новые строки. Используйте 'm' для многострочного флага, а также 'g' для глобального.

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

alert(getLines(string).length)

Если вы не против пропустить пустые строки, это проще но иногда вам нужно оставить их для разметки.

функция getLines (s) { вернуть s.match (/(.+)/ g); }

2 голосов
/ 01 июня 2010

Чтобы подсчитать количество строк в документе (если у вас есть строка в Javascript), просто выполните:

var lines = csvString.split("\n").length;
0 голосов
/ 14 апреля 2014

Если вы просите подсчитать количество строк в CSV, вы можете использовать этот пример.

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

Он принимает файл csv и во всплывающем окне отображает количество строк ..

...