csv 导入逻辑

处理数据 有问题 双引号内逗号的问题

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);
          });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值