Excel 到 Javascript - 忽略从 Excel 复制的列中的换行符

Excel to Javascript - Ignore new line characters in a column copied from Excel

我正在 AngularJS 开发单页应用程序。

有一个文本区域,用户可以在其中粘贴 excel 中的一些行。所有行将具有相同数量的列。我需要处理这个粘贴的数据并将其转换为 javascript 数组。这不是问题,因为我可以用 \r\n 或 \n 或 \r 拆分字符串,用 \t 拆分字段。

如果其中一列中存在换行符,就会出现问题。但在那种情况下,该列用引号 (") 括起来。

我知道正则表达式在这里很有用。但是,我正在努力构建一个正则表达式来忽略带引号的换行符。

//PastedItemData will have the following data
1PS133-0FGD61**\t**"Text with**\r\n**multiple**\r\n**lines"**\t**1**\t**5932.2**\r\n**2PS133-0FGD61**\t**"Simple text with no new lines"**\t**2**\t**1234.5

var PastedItemDataArray = PastedItemData.split("\r\n"); ///use regex here?

我相信其他人可能也遇到过类似的问题,即忽略数据中的新行。也许可能有与使用正则表达式不同的方式。有人有什么想法吗?

谢谢。

我不能用正则表达式来完成,这段代码有效。

var PastedItemData = '1PS133-0FGD61**\t**"Text with**\r\n**multiple**\r\n**lines"**\t**1**\t**5932.2**\r\n**2PS133-0FGD61**\t**"Simple text with no new lines"**\t**2**\t**1234.5';
var i,c,ignore,cr,nl;
var rows,row,str;
ignore = false;
str = "";
rows = [];
row = [];
for (i = 0; i < PastedItemData.length; i++) {
    c = PastedItemData[i];
    if (ignore === true && c !== '"') {
        str += c;
    } else {
        switch (c) {
            case '"':
                ignore = !ignore;
                str += c;
                cr = false;
                break;
            case "\r":
                cr = true;
                break;
            case "\n":
                if (cr === true) {
                    row.push(str);
                    rows.push(row);
                    row = [];
                    str = "";
                    c = "";
                    cr = false;
                }
                break;
            case "\t":
                row.push(str);
                str = "";
                cr = false;
                break;
            default:
                str += c;
                cr = false;
                break;
        }
    }
}
row.push(str);
rows.push(row);
console.log(rows);