123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- function csv2array(data, delimeter) {
-
- if (delimeter == undefined)
- delimeter = ',';
- if (delimeter && delimeter.length > 1)
- delimeter = ',';
-
- var newline = '\n';
- var eof = '';
- var i = 0;
- var c = data.charAt(i);
- var row = 0;
- var col = 0;
- var array = new Array();
- while (c != eof) {
-
- while (c == ' ' || c == '\t' || c == '\r') {
- c = data.charAt(++i);
- }
-
- var value = "";
- if (c == '\"') {
-
- c = data.charAt(++i);
- do {
- if (c != '\"') {
-
- value += c;
- c = data.charAt(++i);
- }
- if (c == '\"') {
-
- var cnext = data.charAt(i+1);
- if (cnext == '\"') {
-
-
- value += '\"';
- i += 2;
- c = data.charAt(i);
- }
- }
- }
- while (c != eof && c != '\"');
- if (c == eof) {
- throw "Unexpected end of data, double-quote expected";
- }
- c = data.charAt(++i);
- }
- else {
-
- while (c != eof && c != delimeter && c!= newline && c != ' ' && c != '\t' && c != '\r') {
- value += c;
- c = data.charAt(++i);
- }
- }
-
- if (array.length <= row)
- array.push(new Array());
- array[row].push(value);
-
- while (c == ' ' || c == '\t' || c == '\r') {
- c = data.charAt(++i);
- }
-
- if (c == delimeter) {
-
- col++;
- }
- else if (c == newline) {
-
- col = 0;
- row++;
- }
- else if (c != eof) {
-
- throw "Delimiter expected after character " + i;
- }
-
- c = data.charAt(++i);
- }
- return array;
- }
|