拆分但尊重逗号名称

Split but respect comma names

我的代码有点问题。 我有一个需要分隔和解析的单词列表,而不是列中的行。

这段代码实际上工作得很好并且可以完成这项工作。 实际效果如何:

const Obj = {
    "0":"Mario, Louigi, Peach",
    "1":"Wario, King Kong, Bomberman",
    "2":"Dracula, Doctor Z, Raikou"
};

const Obj3 = [];

var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;

for( var i = 0; i < count; i++){
  
  var string = [];
  
  for( var j = 0; j < countOuter; j++){
    string.push(Obj[j].split(", ")[i]);
  }
  
  Obj3[i] = string;
}

console.log(Obj3);

但是,如果任何名称在中间示例中有一个逗号:Mr, Robot,它会将逗号视为分隔符,并将 Mr, Robot 一分为二,而不是一分为二。

示例:

    const Obj = {
        "0":"Mr, Robot, Louigi, Peach",
        "1":"Wario, King Kong, Bomberman",
        "2":"Dracula, Doctor Z, Raikou"
    };

    const Obj3 = [];

    var count = Obj[0].split(", ").length;
    var countOuter = Object.keys(Obj).length;

    for( var i = 0; i < count; i++){
      
      var string = [];
      
      for( var j = 0; j < countOuter; j++){
        string.push(Obj[j].split(", ")[i]);
      }
      
      Obj3[i] = string;
    }

    console.log(Obj3);

然后它创建了一个导致我出错的未定义记录。 知道如何解决这个问题吗? 提前致谢!!

如果您在用逗号连接之前无法获取名称,您可以使用正则表达式分隔符将它们分开。例如,如果不在前面只有两个非空白字符的逗号处拆分就足够了,您可以使用:

.split(/(?<=[^ ,]{3,}), /)

仅当此正则表达式前面有至少 3 个不匹配 ' '','.

的字符时,它才会匹配 ', '