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

Excel到Javascript-忽略从Excel复制的列中的新行字符,javascript,angularjs,excel,newline,Javascript,Angularjs,Excel,Newline,我正在使用AngularJS开发一个单页应用程序 有一个文本区域,用户可以在其中粘贴excel中的一些行。所有行的列数都相同。我需要处理粘贴的数据并将其转换为javascript数组。这不是问题,因为我可以按\r\n或\n或\r拆分字符串,并按\t拆分字段 如果其中一列中存在新行字符,则会出现问题。但在这种情况下,该列用引号(“)括起来 我知道正则表达式在这里很有帮助。但是,我正在努力构造一个正则表达式来忽略带引号的新行字符 //PastedItemData will have the foll

我正在使用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);
var PastedItemData='1PS133-0FGD61**\t**“文本,包含**\r\n**多行**\r\n**行”***\t**1**\t**5932.2**\r\n**2PS133-0FGD61**\t**“简单文本,无新行”***\t**2**\t**1234.5';
变量i、c、忽略、cr、nl;
变量行,行,str;
忽略=错误;
str=“”;
行=[];
行=[];
对于(i=0;i
可能是@Mr.7.的副本。。好吧,
Java
在这里没有任何作用。是的。但是,如果其中一列中有\r\n行,它将失败。我正在试图找到一种方法来忽略特定的\r\n或\r\n行。比如说,如果第二列有“多行文本”“嗨,它起作用了。但仅适用于单次出现的新行字符。我想它只会忽略引号中最后出现的新行。谢谢你的帮助。如果您遇到了一种扩展方法,可以忽略引号内新行的多次出现,请告诉我。这会有很大的帮助。我正在以下regexr链接上尝试:()