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);
我正在 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);