Javascript前端

因为需要用到解析和导出CSV,找了几个库都不能立马上手,还有些解析有问题,就写了个简单的。

CSV文本与二维数组之间互相转化。

解析需要另外做文件读取,获取到文本内容(CSV是纯文本的表格文件),然后用parse函数解析;导出也是一样,用encode函数把二维数组转化为csv文本,然后另外做文件下载。

虽然简单,但是目前使用还没有碰到什么大问题。

代码:

const CSV = {
    parse(text) {
        return text.replace(/\s*$/, "").split(/\n|\r\n/).map(text => {
            let re = [];
            while (text.match(/^"|,"/)) {
                const match = text.match(/^"|,"/);

                const left = text.slice(0, match.index);

                const right = text.slice(match.index + match[0].length);

                // 如果不是在开头 就处理左边
                if (match[0] !== `"`)
                    re = re.concat(left.split(","));

                const closeMatch = right.match(/^(([^"]|"")*)("$|",)/);

                const content = closeMatch[1].replace(/""/g, `"`);
                re.push(content);

                text = right.slice(closeMatch[0].length);
            }
            if (text)
                re = re.concat(text.split(","));
            return re;
        }
        );
    },
    encode(arr) {
        return arr.map(line => {
            return line.map(each => `"${String(each).replace(/"/g, `""`)}"`).join(",");
        }
        ).join("\n") + "\n";
    }
}

说点什么吧 ~