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



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

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

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

我知道regex在这里会有所帮助。然而,我正在努力构建一个正则表达式来忽略带有引号的换行符。

//PastedItemData will have the following data
1PS133-0FGD61**t**"Text with**rn**multiple**rn**lines"**t**1**t**5932.2**rn**2PS133-0FGD61**t**"Simple text with no new lines"**t**2**t**1234.5
var PastedItemDataArray = PastedItemData.split("rn"); ///use regex here?

我相信其他人可能也面临过类似的问题,即忽略数据中的新行。也许有一种不同于使用regex的方法。有人有什么想法吗?

谢谢。

我不能用正则表达式来完成,这段代码可以工作。

var PastedItemData = '1PS133-0FGD61**t**"Text with**rn**multiple**rn**lines"**t**1**t**5932.2**rn**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);

相关内容

  • 没有找到相关文章

最新更新