Excel to Javascript – 忽略从Excel复制的列中的新行字符
我正在研究AngularJS中的单页面应用程序。
有一个文本区域,用户可以从Excel中粘贴一些行。 所有行将具有相同的列数。 我需要处理这个粘贴的数据,并将其转换为一个JavaScript数组。 这不是问题,因为我可以用\ r \ n或\ n或\ r分割string,并用\ t分割字段。
如果在其中一列中存在新的行字符,则会出现问题。 但在这种情况下,该列用引号(“)括起来。
我明白,正则expression式可以在这里有所帮助。 然而,我正在努力构造一个正则expression式来忽略带有引号的新行字符。
//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?
我相信别人可能会面临类似的忽略数据新线的问题。 也许可能有不同的方式比使用正则expression式。 有没有任何想法?
谢谢。
我不能用正则expression式来做这个代码。
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);