处理数据 有问题 双引号内逗号的问题
function getCsvObjectArr(content) {
var contentArr = content.split(/\r\n|\n/); // 包含\r\n和\n两种情况
var titleArr = contentArr[0].split(",");
contentArr.shift();
// 转换数据为JSON array.[{"标题1":"值1"},{...}]
var cObjectArr = [];
for (var i = 0; i < contentArr.length - 1; i++) { // 去掉最后一行多余的空行
var targetStr = contentArr[i].match(/"[^"]*"/g).join(''); // "[^"]*"/g 找到所有用双引号("")包住的字符串
var resultStr = contentArr[i].replace(targetStr, targetStr.replace(/,/g, "{}")); // 将双引号中的逗号替换成{},避免包含了逗号的单元格的数据被分割
var contentArrItem = resultStr.split(','); // 用处理过的数据进行逗号分隔
for (var j = 0; j < contentArrItem.length; j++) {
contentArrItem[j] = contentArrItem[j].replace(/{}/g, ','); // 把包含了逗号的单元格的数据还原
if (xdsObjectIsUndefined(cObjectArr[i])) cObjectArr[i] = {};
cObjectArr[i][titleArr[j]] = contentArrItem[j];
}
}
return cObjectArr;
}
xdsUploadDocument(function (content) {
var opObjectArr = getCsvObjectArr(content);
// 构造buildEiInfo的行数据
var rowDataList = [];
for (var k = 0, len = opObjectArr.length; k < len; k++) {
// 校验层级标签
var levelTagPattern = new RegExp("^(/[_a-zA-Z0-9\u4e00-\u9fa5][_a-zA-Z0-9\u4e00-\u9fa5\ ]{0,255}){1,255}$|^/$");
if (!levelTagPattern.test(opObjectArr[k]["*层级标签"])) {
IPLAT.NotificationUtil("层级标签应为以/开头,并以中英文字符、数字、下划线(_)、连字符(-)组成,请修改后重新导入!", "error");
throw xdsStringFormat("层级标签应为以/开头,并以中英文字符、数字、下划线(_)、连字符(-)组成,请修改后重新导入!");
}
var opParams = opObjectArr[k]["*参数"].substring(1, opObjectArr[k]["*参数"].length - 1).replace(/""/g, '"'); // 去掉参数单元格数据外部的双引号,内部的两个双引号变为单个
checkParamsNameValid(JSON.parse(opParams));
var row = {
"uuid": opObjectArr[k]["*UUID"],
"alias": opObjectArr[k]["*算子名称"],
"description": opObjectArr[k]["描述"],
"opIsCustom": opObjectArr[k]["*是否自定义"],
"opLevelTag": opObjectArr[k]["*层级标签"],
"opLangType": opObjectArr[k]["*语言"],
"opInput": opObjectArr[k]["*输入数据"],
"opOutput": opObjectArr[k]["输出数据"],
"opParams": opParams,
"opCodeInfo": opObjectArr[k]["*算子代码"],
"opEntry": opObjectArr[k]["*入口模块"],
"opFunc": opObjectArr[k]["*入口函数"]
};
rowDataList.push(row);
}
xdsAjaxGet("xaj_importOperator").process(rowDataList);
});